जवाबों:
आप अपने कोड में किसी भी बिंदु पर एक अपवाद फेंक सकते हैं:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
इसके बाद अपवाद को DefaultExceptionHtmlSubscriber द्वारा पकड़ लिया जाता है और इसके लिए एक उपप्रकार /system/403
या /system/404
लौटा दिया जाता है, जिसे आप मूल साइट सेटिंग्स में कॉन्फ़िगर कर सकते हैं यदि आप एक सामान्य "एक्सेस अस्वीकृत" या "नहीं मिला" पृष्ठ प्रदर्शित करना चाहते हैं।
अन्य विकल्प इस बात पर निर्भर करते हैं कि कोड कहां रखा गया है:
नियंत्रक या प्रपत्र से 403 या 404 प्रतिसाद लौटाएं
यदि आप किसी ईवेंट सब्सक्राइबर में हैं, तो किसी ईवेंट में प्रतिक्रिया सेट करें।
आपको जो कभी नहीं करना चाहिए वह सीधे प्रतिक्रिया भेजना है। यह कोड को रोकता नहीं है और दो प्रतिक्रियाएँ पैदा करता है, एक आपने भेजा है और एक ड्रुपल कर्नेल द्वारा लौटाया गया है। इससे अप्रत्याशित व्यवहार होगा।
सिस्टम की पहुंच से वंचित मार्ग से अपना रीडायरेक्ट बनाएँ।
$url = Url::fromRoute('system.403');
$response = new RedirectResponse($url->toString());
यह आपको Drupal के मानक पहुँच निषेध पृष्ठ पर ले जाता है। मार्ग को system.routing.yml
कोर में परिभाषित किया गया है।
शीर्ष उत्तर आपको एक टूटे हुए दिखने वाले ब्राउज़र पर आधारित पहुँच अस्वीकृत देगा, जो कि आप जो देख रहे हैं वह हो सकता है। यदि आप अपने Drupal UI को दिखाना चाहते हैं, तो उपरोक्त का उपयोग करें।
एक पृष्ठ से, आप उपयोग कर सकते हैं:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
जैसे: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-dal-8
या सबमिट से:
$form_state->setRedirect('your.module.route.name');
फिर 'your.module.route.name' की एक्सेस अनुमति को कॉन्फ़िगर करें
यदि आपको पता नहीं है कि एक्सेस परमिट कैसे कॉन्फ़िगर करें, तो देखें: http://www.drupal8.ovh/en/tutoriels/66/create-a-custom-permission-drupal-8
return new Response('', Response::HTTP_FORBIDDEN);