Estas são as funções / métodos / classes que devem ser usadas no código Drupal 8.6.x.
drupal_access_denied()
foi substituído da classe AccessDeniedHttpException . Os retornos de chamada da página que precisam retornar o erro Acesso negado devem usar código semelhante ao seguinte.
// 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;
}
}
Em vez de drupal_get_query_array()
existir parse_query()
(uma função no GuzzleHttp\Psr7
espaço para nome), que faz parte do Guzzle.
drupal_goto()
foi substituído da RedirectResponse
classe. Os retornos de chamada da página que precisam redirecionar os usuários devem usar código semelhante ao seguinte. (Observe que os manipuladores de envio de formulários não devem usar essa classe.)
// 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()
foi substituído por um serviço Drupal 8 que implementa a interface ClientInterface . O código Drupal 8 deve ser semelhante ao seguinte.
// 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()
foi substituído da classe NotFoundHttpException . Os retornos de chamada da página devem usar código semelhante ao seguinte.
// 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()
deve ser substituído por um assinante de evento, semelhante ao seguinte.
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()
foi substituído por UrlHelper::encodePath()
drupal_get_query_parameters()
foi substituído por UrlHelper::filterQueryParameters()
drupal_http_build_query()
foi substituído por UrlHelper::buildQuery()
, que será removido assim que o núcleo do Drupal exigir pelo menos PHP 5.4 (nesse ponto, será possível usá-lo diretamente http_build_query()
).
drupal_parse_url()
foi substituído por UrlHelper::parse()
Observe que, em comparação com as versões anteriores do Drupal, existem algumas mudanças importantes. Por exemplo, alguns métodos que estavam na Url
classe foram movidos na UrlHelper
classe; algumas das classes Guzzle não são mais usadas.