Yanıtlar:
Kodunuzdaki herhangi bir noktaya bir istisna atabilirsiniz:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
İstisna daha sonra DefaultExceptionHtmlSubscriber tarafından yakalanır ve genel bir "erişim reddedildi" veya "bulunamadı" sayfası görüntülemek istemiyorsanız temel site ayarlarında yapılandırabileceğiniz bir alt istek /system/403
veya /system/404
döndürülür.
Diğer seçenekler kodun nereye yerleştirildiğine bağlıdır:
Bir denetleyiciden veya formdan 403 veya 404 yanıtı döndürme
Etkinlik abonesindeyseniz bir etkinlikte yanıt ayarlayın.
Asla yapmamanız gereken şey doğrudan bir yanıt göndermektir. Bu, kodu durdurmaz ve biri Drupal çekirdeği tarafından gönderilen ve biri geri gönderilen iki yanıt üretir. Bu öngörülemeyen davranışlara neden olacaktır.
Yönlendirmenizi sistemin erişim reddedilen rotasından oluşturun.
$url = Url::fromRoute('system.403');
$response = new RedirectResponse($url->toString());
Bu sizi Drupal standart erişim reddedildi sayfasına götürür. Güzergah system.routing.yml
özünde tanımlanmıştır .
En iyi cevap, aradığınız şey olabilecek kırık görünümlü tarayıcı tabanlı bir Erişim Reddedildi. Drupal kullanıcı arayüzünüzün gösterilmesini istiyorsanız, yukarıdakileri kullanın.
Bir sayfadan şunları kullanabilirsiniz:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
gibi: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-8
Veya bir gönderiden:
$form_state->setRedirect('your.module.route.name');
Ardından 'your.module.route.name' erişim iznini yapılandırın
Erişim iznini nasıl yapılandıracağınızı bilmiyorsanız, şunları kontrol edin: http://www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
return new Response('', Response::HTTP_FORBIDDEN);