উত্তর:
আপনি আপনার কোডের যে কোনও সময়ে একটি ব্যতিক্রম নিক্ষেপ করতে পারেন:
403:
throw new \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();
404:
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
ব্যতিক্রমটি পরে ডিফল্ট এক্সসেপশনএইচটিএমএল সাবস্ক্রাইবার দ্বারা ক্যাচ করা হয় এবং এর জন্য একটি সাবক্রিওয়েস্ট ফিরে আসে /system/403বা /system/404ফিরে আসে, আপনি যদি জেনেরিক "অ্যাক্সেস অস্বীকৃত" বা "খুঁজে পাওয়া যায় না" পৃষ্ঠাটি প্রদর্শন করতে না চান তবে আপনি বেসিক সাইট সেটিংসে কনফিগার করতে পারেন।
অন্যান্য বিকল্পগুলি কোডটি কোথায় স্থাপন করা হয়েছে তার উপর নির্ভর করে:
একটি নিয়ামক বা ফর্ম থেকে 403 বা 404 প্রতিক্রিয়া ফিরিয়ে দিন
আপনি কোনও ইভেন্টের গ্রাহক হলে কোনও ইভেন্টে প্রতিক্রিয়া সেট করুন।
আপনার যা করা উচিত তা হ'ল সরাসরি প্রতিক্রিয়া প্রেরণ করা। এটি কোডটি থামায় না এবং দুটি প্রতিক্রিয়া তৈরি করে, একটি আপনি প্রেরণ করেছেন এবং একটি ড্রুপাল কার্নেল দ্বারা ফিরে এসেছে। এটি অনাকাঙ্ক্ষিত আচরণের ফলাফল করবে।
সিস্টেমের অ্যাক্সেস অস্বীকৃত রুট থেকে আপনার পুনর্নির্দেশ তৈরি করুন।
$url = Url::fromRoute('system.403');
$response = new RedirectResponse($url->toString());
এটি আপনাকে ড্রুপাল স্ট্যান্ডার্ড অ্যাক্সেস অস্বীকৃত পৃষ্ঠাতে নিয়ে যায়। রুটটি মূল হিসাবে সংজ্ঞায়িত করা system.routing.ymlহয়েছে।
শীর্ষের উত্তরটি আপনাকে একটি ভাঙ্গা চেহারা ব্রাউজার ভিত্তিক অ্যাক্সেস অস্বীকার করবে, যা আপনি যা খুঁজছেন তা হতে পারে। আপনি যদি আপনার ড্রুপাল ইউআই প্রদর্শন করতে চান তবে উপরেরটি ব্যবহার করুন।
একটি পৃষ্ঠা থেকে, আপনি ব্যবহার করতে পারেন:
return new \Symfony\Component\HttpFoundation\RedirectResponse(\Drupal::url('your.module.route.name'));
পছন্দ: http://www.drupal8.ovh/en/tutoriels/88/page-redirection-on-drupal-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);