Antworten:
Sie können an jeder Stelle in Ihrem Code eine Ausnahme auslösen:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
Die Ausnahme wird dann von DefaultExceptionHtmlSubscriber abgefangen und eine Unteranforderung für /system/403
oder /system/404
wird zurückgegeben, die Sie in den grundlegenden Site-Einstellungen konfigurieren können, wenn Sie keine generische Seite "Zugriff verweigert" oder "Nicht gefunden" anzeigen möchten.
Andere Optionen hängen davon ab, wo der Code platziert wird:
Gibt eine 403- oder 404-Antwort von einem Controller oder einem Formular zurück
Legen Sie eine Antwort in einem Ereignis fest, wenn Sie sich in einem Ereignisabonnenten befinden.
Was Sie niemals tun sollten, ist eine Antwort direkt zu senden. Dies stoppt den Code nicht und erzeugt zwei Antworten, eine, die Sie gesendet haben, und eine, die vom Drupal-Kernel zurückgegeben wurde. Dies führt zu unvorhersehbarem Verhalten.
Erstellen Sie Ihre Umleitung von der Route, auf der der Zugriff des Systems verweigert wurde.
$url = Url::fromRoute('system.403');
$response = new RedirectResponse($url->toString());
Hiermit gelangen Sie zur Seite mit dem verweigerten Drupal-Standardzugriff. Die Route ist system.routing.yml
im Kern definiert .
Die beste Antwort gibt Ihnen einen kaputt aussehenden browserbasierten Zugriff verweigert, nach dem Sie möglicherweise suchen. Wenn Ihre Drupal-Benutzeroberfläche angezeigt werden soll, verwenden Sie die oben genannten Anweisungen.
Auf einer Seite können Sie Folgendes verwenden:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
wie: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
Oder von einem von einreichen:
$form_state->setRedirect('your.module.route.name');
Konfigurieren Sie dann die Zugriffsberechtigung für 'your.module.route.name'.
Wenn Sie nicht wissen, wie Sie die Zugriffsberechtigung konfigurieren, überprüfen Sie: http://www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
return new Response('', Response::HTTP_FORBIDDEN);