Odpowiedzi:
Możesz zgłosić wyjątek w dowolnym momencie kodu:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
Wyjątek jest następnie przechwytywany przez DefaultExceptionHtmlSubscriber i zwracane jest zapytanie /system/403lub żądanie /system/404, które można skonfigurować w podstawowych ustawieniach witryny, jeśli nie chcesz wyświetlać ogólnej strony „odmowa dostępu” lub „nie znaleziono”.
Inne opcje zależą od tego, gdzie znajduje się kod:
Zwraca odpowiedź 403 lub 404 ze sterownika lub formularza
Ustaw odpowiedź w zdarzeniu, jeśli jesteś subskrybentem wydarzenia.
Nigdy nie powinieneś wysyłać odpowiedzi bezpośrednio. Nie zatrzymuje to kodu i generuje dwie odpowiedzi, jedną wysłaną i jedną zwróconą przez jądro Drupala. Spowoduje to nieprzewidziane zachowanie.
Zbuduj przekierowanie z trasy, do której system nie ma dostępu.
$url = Url::fromRoute('system.403');
$response = new RedirectResponse($url->toString());
Spowoduje to przejście do standardowej strony odmowy dostępu Drupal. Trasa jest zdefiniowana system.routing.ymlw rdzeniu.
Najlepsza odpowiedź da ci odmowę dostępu odmówionego dostępu, co może być tym, czego szukasz. Jeśli chcesz, aby Twój interfejs Drupal był wyświetlany, użyj powyższego.
Na stronie możesz użyć:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
jak: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
Lub od z:
$form_state->setRedirect('your.module.route.name');
Następnie skonfiguruj uprawnienia dostępu do „your.module.route.name”
Jeśli nie wiesz, jak skonfigurować uprawnienia dostępu, sprawdź: http://www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
return new Response('', Response::HTTP_FORBIDDEN);