Estas son las funciones / métodos / clases que deben usarse en el código Drupal 8.6.x.
drupal_access_denied()
ha sido reemplazado de la clase AccessDeniedHttpException . Las devoluciones de llamada de página que necesitan devolver el error de acceso denegado deben usar un código similar al siguiente.
// system_batch_page()
public function batchPage(Request $request) {
require_once $this->root . '/core/includes/batch.inc';
$output = _batch_page($request);
if ($output === FALSE) {
throw new AccessDeniedHttpException();
}
elseif ($output instanceof Response) {
return $output;
}
elseif (isset($output)) {
$title = isset($output['#title']) ? $output['#title'] : NULL;
$page = [
'#type' => 'page',
'#title' => $title,
'#show_messages' => FALSE,
'content' => $output,
];
// Also inject title as a page header (if available).
if ($title) {
$page['header'] = [
'#type' => 'page_title',
'#title' => $title,
];
}
return $page;
}
}
En lugar de drupal_get_query_array()
existe parse_query()
(una función en el GuzzleHttp\Psr7
espacio de nombres), que es parte de Guzzle.
drupal_goto()
ha sido reemplazado de la RedirectResponse
clase. Las devoluciones de llamada de página que necesitan redirigir a los usuarios deben usar un código similar al siguiente. (Tenga en cuenta que los controladores de envío de formularios no deben usar esta clase).
// AddSectionController::build()
public function build(SectionStorageInterface $section_storage, $delta, $plugin_id) {
$section_storage
->insertSection($delta, new Section($plugin_id));
$this->layoutTempstoreRepository
->set($section_storage);
if ($this->isAjax()) {
return $this->rebuildAndClose($section_storage);
}
else {
$url = $section_storage->getLayoutBuilderUrl();
return new RedirectResponse($url->setAbsolute()->toString());
}
}
drupal_http_request()
ha sido reemplazado de un servicio Drupal 8 que implementa la interfaz ClientInterface . El código Drupal 8 debe ser similar al siguiente.
// system_retrieve_file()
try {
$data = (string) \Drupal::httpClient()->get($url)->getBody();
$local = $managed ? file_save_data($data, $path, $replace) : file_unmanaged_save_data($data, $path, $replace);
} catch (RequestException $exception) {
\Drupal::messenger()->addError(t('Failed to fetch file due to error "%error"', ['%error' => $exception->getMessage()]));
return FALSE;
}
drupal_not_found()
ha sido reemplazado de la clase NotFoundHttpException . Las devoluciones de llamada de página deben usar un código similar al siguiente.
// BookController::bookExport()
public function bookExport($type, NodeInterface $node) {
$method = 'bookExport' . Container::camelize($type);
// @todo Convert the custom export functionality to serializer.
if (!method_exists($this->bookExport, $method)) {
$this->messenger()->addStatus(t('Unknown export format.'));
throw new NotFoundHttpException();
}
$exported_book = $this->bookExport->{$method}($node);
return new Response($this->renderer->renderRoot($exported_book));
}
drupal_site_offline()
debe ser reemplazado por un suscriptor de eventos, similar al siguiente.
public static function getSubscribedEvents() {
$events[KernelEvents::REQUEST][] = ['onKernelRequestMaintenance', 30];
$events[KernelEvents::EXCEPTION][] = ['onKernelRequestMaintenance'];
return $events;
}
public function onKernelRequestMaintenance(GetResponseEvent $event) {
$request = $event->getRequest();
$route_match = RouteMatch::createFromRequest($request);
if ($this->maintenanceMode->applies($route_match)) {
// Don't cache maintenance mode pages.
\Drupal::service('page_cache_kill_switch')->trigger();
if (!$this->maintenanceMode->exempt($this->account)) {
// Deliver the 503 page if the site is in maintenance mode and the
// logged in user is not allowed to bypass it.
// If the request format is not 'html' then show default maintenance
// mode page else show a text/plain page with maintenance message.
if ($request->getRequestFormat() !== 'html') {
$response = new Response($this->getSiteMaintenanceMessage(), %03, ['Content-Type' => 'text/plain']);
$event->setResponse($response);
return;
}
drupal_maintenance_theme();
$response = $this->bareHtmlPageRenderer->renderBarePage([ '#markup' => $this->getSiteMaintenanceMessage()], $this->t('Site under maintenance'), 'maintenance_page');
$response->setStatusCode(503);
$event->setResponse($response);
}
else {
// Display a message if the logged in user has access to the site in
// maintenance mode. However, suppress it on the maintenance mode
// settings page.
if ($route_match->getRouteName() != 'system.site_maintenance_mode') {
if ($this->account->hasPermission('administer site configuration')) {
$this->messenger->addMessage($this
->t('Operating in maintenance mode. <a href=":url">Go online.</a>', [':url' => $this->urlGenerator->generate('system.site_maintenance_mode')]), 'status', FALSE);
}
else {
$this->messenger->addMessage($this->t('Operating in maintenance mode.'), 'status', FALSE);
}
}
}
}
}
drupal_encode_path()
ha sido reemplazado por UrlHelper::encodePath()
drupal_get_query_parameters()
ha sido reemplazado por UrlHelper::filterQueryParameters()
drupal_http_build_query()
ha sido reemplazado por UrlHelper::buildQuery()
, que se eliminará una vez que el núcleo de Drupal requiera al menos PHP 5.4 (en ese momento, será posible usarlo directamente http_build_query()
).
drupal_parse_url()
ha sido reemplazado por UrlHelper::parse()
Tenga en cuenta que, en comparación con versiones anteriores de Drupal, hay algunos cambios importantes. Por ejemplo, algunos métodos que estaban en la Url
clase se han movido en la UrlHelper
clase; algunas de las clases de Guzzle ya no se usan.