রাউটিং কন্ট্রোলার:

রাউটিং কন্ট্রোলার আপনাকে অনুরোধগুলি পরিচালনা করার জন্য ব্যবহৃত পদ্ধতিগুলির সাথে নিয়ামক ক্লাস তৈরি করতে দেয়।

এখন, আমরা একটি উদাহরণের মাধ্যমে রাউটিং কন্ট্রোলারগুলি বুঝব।

স্টেপ-০১: প্রথমত আমাদের একটি নিয়ামক তৈরি করতে হবে। আমরা ইতিমধ্যে পূর্ববর্তী বিষয়ে 'PostController' নামে একটি নিয়ামক তৈরি করেছি ।

স্টেপ-০২: web.php ফাইলটি খুলুন এবং নিম্নলিখিত কোডটি লিখুন।

  1. Route::get('/post','PostController@index');  

উপরের কোডে '/post' হল সেই URL যা আমরা অ্যাক্সেস করতে চাই এবং PostController হল কন্ট্রোলারের নাম। 'index' হল PostController.php ফাইলে উপলব্ধ পদ্ধতির নাম এবং @index নির্দেশ করে যে যখন আমরা '/post' url অ্যাক্সেস করি তখন index() পদ্ধতিটি আঘাত করা উচিত।

স্টেপ-০৩: হাইলাইট হিসাবে নীচে দেখানো কোড যোগ করুন।

  1. <?php  
  2. namespace App\Http\Controllers;  
  3. use Illuminate\Http\Request;  
  4. class PostController extends Controller  
  5. {  
  6.     /** 
  7.      * Display a listing of the resource. 
  8.      * 
  9.      * @return \Illuminate\Http\Response 
  10.      */  
  11. public function index()  
  12. {  
  13.       return "Hello javaTpoint";}     →  
  14. /** 
  15.      * Show the form for creating a new resource. 
  16.      * 
  17.      * @return \Illuminate\Http\Response 
  18.  */  
  19. public function create()  
  20. {  
  21.         //  
  22. }  
  23. /** 
  24.      * Store a newly created resource in storage. 
  25.      * 
  26.      * @param  \Illuminate\Http\Reques $request 
  27.      * @return \Illuminate\Http\Response 
  28.      */  
  29. public function store(Request $request)  
  30.       
  31. {  
  32.   
  33.         //  
  34.      
  35.  }  
  36.  /** 
  37.      * Display the specified resource. 
  38.      * 
  39.      * @param  int  $id 
  40.      * @return \Illuminate\Http \Response 
  41. */  
  42. public function show($id)  
  43. {  
  44.         //  
  45. }  
  46. /** 
  47.      * Show the form for editing the specified resource. 
  48.      * 
  49.      * @param  int  $id 
  50.      * @return  \Illuminate\Http\Response 
  51.      */  
  52. public function edit($id)  
  53. {  
  54.         //  
  55.  }  
  56.   
  57. /** 
  58.      * Update the specified resource in storage. 
  59.      * 
  60.      * @param  \Illuminate\Http\Request    
  61. $request 
  62.      * @param  int  $id 
  63.      * @return \Illuminate\Http\Response 
  64.      */  
  65.       
  66. public function update(Request $request$id)  
  67. {  
  68.         //  
  69. }  
  70.   
  71.       
  72. /** 
  73.      * Remove the specified resource from storage. 
  74.      * 
  75.      * @param  int  $id 
  76.      * @return   
  77. \Illuminate\Http\Response 
  78.      */  
  79.  public function destroy($id)  
  80.  {  
  81.        //  
  82.   }  
  83. }  

স্টেপ-০৪: ব্রাউজারে URL লিখুন যেমন localhost/laravelproject/public/host, তারপর আউটপুটটি নীচের মত দেখানো হবে।

আউটপুট

এখন পর্যন্ত আমরা পর্যবেক্ষণ করেছি কিভাবে আমরা কন্ট্রোলার অ্যাক্সেস করতে পারি। এখন আমরা দেখব কিভাবে কন্ট্রোলার ক্লাসে ডেটা পাস করা যায়।

কন্ট্রোলারের কাছে ডেটা পাঠানো হচ্ছে।

আসুন আমরা কীভাবে কন্ট্রোলারের কাছে ডেটা প্রেরণ করতে পারি তার একটি উদাহরণের মাধ্যমে বুঝে নেই।

স্টেপ-০১: web.php ফাইলটি খুলুন এবং নিম্নলিখিত কোড যোগ করুন।

Route::get('/post/{id}','PostController@index');

উপরের কোডটিতে '/post' url-'id' প্যারামিটার রয়েছে।

স্টেপ-০২: PostController.php ফাইলটি সম্পাদনা করুন।

  1. public function index($id)  
  2. {  
  3.     return "ID is :"$id;  
  4. }  

উপরের ক্ষেত্রে আমরা index() পদ্ধতি আপডেট করেছি। আমরা index() পদ্ধতিতে 'id' প্যারামিটার পাস করেছি।

স্টে-০৩: ওয়েব ব্রাউজারে URL 'localhost/laravelproject/post/100' লিখুন তারপর আউটপুটটি নীচের মত দেখানো হবে।

কন্ট্রোলার এবং নেমস্পেস:

যখন আমরা Route::get() পদ্ধতিতে কন্ট্রোলার ক্লাস নির্দিষ্ট করি তখন আমাদের সম্পূর্ণ কন্ট্রোলার নেমস্পেস নির্দিষ্ট করতে হবে না। যেহেতু RouteServiceProvider নেমস্পেস ধারণ করে এমন সমস্ত রুট ফাইল লোড করে। আমাদের শুধু নামস্থানের App/Http/Controllers অংশের পরে আসা ক্লাসের নামটি নির্দিষ্ট করতে হবে ।

যদি সম্পূর্ণ কন্ট্রোলার ক্লাসটি হয় App/Http/Controllers/Post/PostController, তাহলে আমরা নীচের মতো কন্ট্রোলারের রুটগুলি নিবন্ধন করতে পারি।

Route::get('\post','Post\PostController@index');

একক অ্যাকশন কন্ট্রোলার:

আমরা যদি কন্ট্রোলারে একক পদ্ধতি ব্যবহার করতে চাই তাহলে আমরা কন্ট্রোলারে single __invoke() পদ্ধতি ব্যবহার করতে পারি।

যখন আমরা php artisan:make controller PostController কমান্ড ব্যবহার করে কন্ট্রোলার তৈরি করি তখন PostController ফাইলের গঠন হবে।

  1. <?php  
  2. namespace App\Http\Controllers;  
  3. use Illuminate\Http\Request;  
  4. class PostController extends Controller  
  5. {  
  6.       
  7.       //  
  8.   
  9. }  

এখন আমরা পোস্ট কন্ট্রোলার ক্লাসে __invoke() ফাংশনের কোড যোগ করি:

  1. <?php  
  2. namespace App\Http\Controllers;  
  3. use Illuminate\Http\Request;  
  4. class PostController extends Controller  
  5. {  
  6.     //  
  7.  public function __invoke($id)  
  8. {  
  9.   return "id is : "$id;  
  10. }  
  11. }  

শেষ পর্যন্ত আমরা web.php ফাইলে কোডটি যোগ করি যা ক্রিয়াগুলি পরিচালনা করার জন্য দায়ী৷

  1. route::get('/post/{id}','PostController');  

উপরের কোডটি পোস্ট কন্ট্রোলার ক্লাসের __invoke() পদ্ধতিতে আঘাত করে। এটি এই উপসংহারে পৌঁছেছে যে একক অ্যাকশন কন্ট্রোলার অ্যাক্সেস করার জন্য আমাদের @invoke পদ্ধতি লিখতে হবে না।

আউটপুট

যখন আমরা URL 'localhost/laravelproject/public/post/67' লিখি তখন আউটপুট হবে।

যদি কোনো ক্রিয়া নির্দিষ্ট করা না থাকে অর্থাৎ আমরা __invoke() পদ্ধতি লিখতে ভুলে যাই তাহলে UnexpectedValueExpression দেখানো হয় বা নিক্ষেপ করা হয়।

ধরুন আমরা পোস্ট কন্ট্রোলার ক্লাস থেকে __invoke() পদ্ধতিটি সরিয়ে ফেলি তাহলে আউটপুট হবে।

আপনাদের সুবিধার্থে আমি আমার টিপস এন্ড ট্রিকসগুলি ভিডিও আকারে শেয়ার করার জন্য একটি ইউটিউব চ্যানেল তৈরি করেছি। আশা করি চ্যানেলটি Subscribe করবেন।

সৌজন্যে : বাংলাদেশের জনপ্রিয় এবং বর্তমান সময়ের বাংলা ভাষায় সকল গুরুত্বপূর্ণ বিষয়ক টিউটোরিয়াল সাইট - www.TutorialBD71.blogspot.com নিত্যনতুন বিভিন্ন বিষয়ে টিউটোরিয়াল পেতে সাইটটিতে সবসময় ভিজিট করুন।

Leave a Comment