লারাভেল রিসোর্স কন্ট্রোলার:

লারাভেল রিসোর্স কন্ট্রোলার কন্ট্রোলারকে কোডের একক লাইনে CRUD রুট প্রদান করে। একটি রিসোর্স কন্ট্রোলার একটি নিয়ামক তৈরি করতে ব্যবহৃত হয় যা আপনার অ্যাপ্লিকেশন দ্বারা সঞ্চিত সমস্ত http অনুরোধগুলি পরিচালনা করে।

resource() হল একটি স্ট্যাটিক ফাংশন যেমন get() পদ্ধতি যা একাধিক রুটে অ্যাক্সেস দেয় যা আমরা একটি কন্ট্রোলারে ব্যবহার করতে পারি।

Syntax of resource() method:

Route::resource('posts','PostController');

উপরের সিনট্যাক্সে 'posts'-এ সমস্ত রুট রয়েছে এবং 'PostController' হল কন্ট্রোলারের নাম। এই ক্ষেত্রে আমাদের মেথডের নাম উল্লেখ করার দরকার নেই যেমন @index আমরা get() পদ্ধতিতে করেছি কারণ create(), store(), delete() মেথড পোস্ট কন্ট্রোলার ক্লাসে ইতিমধ্যেই পাওয়া যায়।

আসুন একটি উদাহরণের মাধ্যমে বুঝতে পারি।

স্টেপ-০১: নিচে দেওয়া কমান্ড ব্যবহার করে কন্ট্রোলার তৈরি করুন।

  1. php  artisan make:controller PostController -resource;  

উপরের কমান্ডটি app/Http/Controllers/PostController.php ডিরেক্টরিতে কন্ট্রোলার তৈরি করবে । PostController ক্লাসে প্রতিটি রিসোর্স অপারেশনের পদ্ধতি রয়েছে ।

PostController.php ফাইলের গঠন নিচে দেওয়া হল।

  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.      * @return \Illuminate\Http\Response 
  9.      */  
  10. public function index()  
  11. {  
  12.           
  13. //  
  14.       
  15. }  
  16. /** 
  17.      * Show the form for creating a new resource. 
  18.      * @return \Illuminate\Http\Response 
  19.        
  20. */  
  21.  public function create()  
  22. {  
  23.           
  24. //  
  25.       
  26. }  
  27. /** 
  28.      * Store a newly created resource in storage. 
  29.      * 
  30.      * @param  \Illuminate\Http\Request   $request 
  31.      * @return \Illuminate\Http\Response 
  32.      */  
  33. public function store(Request $request)  
  34. {  
  35.           
  36. //  
  37.       
  38. }  
  39. /** 
  40.      * Display the specified resource. 
  41.      * @param  int  $id 
  42.      * @return \Illuminate\Http\Response 
  43.      */  
  44. public function show($id)  
  45. {  
  46.   
  47.   //  
  48. }  
  49. /** 
  50.      * Show the form for editing the specified resource. 
  51.      * @param  int  $id 
  52.      * @return  \Illuminate\Http\Response 
  53.      */  
  54.  public function edit($id)  
  55.       
  56. {  
  57.           
  58. //  
  59.       
  60. }  
  61. /** 
  62.      * Update the specified resource in storage. 
  63.      * @param  \Illuminate\Http\Request   $request 
  64.      * @param  int  $id 
  65.      * @return \Illuminate\Http\Response 
  66.      */  
  67.  public function update(Request $request$id)  
  68. {  
  69.           
  70. //  
  71.       
  72. }  
  73. /** 
  74.      * Remove the specified resource from storage. 
  75.      * @param  int  $id 
  76.      * @return  \Illuminate\Http\Response 
  77.      */  
  78.  public function destroy($id)  
  79.  {  
  80.           
  81. //}}  

স্টেপ-০২: এখন আমাদের নিয়ন্ত্রকের কাছে সম্পদপূর্ণ রুট নিবন্ধন করতে হবে এবং যা নিম্নরূপ করা যেতে পারে।

  1. Route::resource('posts','PostController');  

Git Bash উইন্ডো খুলুন এবং কমান্ড লিখুন php artisan route:listএই কমান্ড নিম্নলিখিত আউটপুট উত্পাদন করে।

resource() পদ্ধতিতে পোস্ট প্যারামিটার উপরের আউটপুটে দেখানো নাম বা সংস্থান এবং এর সংশ্লিষ্ট পদ্ধতিগুলি তৈরি করে। উপরের আউটপুটে posts.destroy একটি প্যারামিটার পাঠাচ্ছে Delete পদ্ধতিতে যা Laravel-এ খুবই বিশেষ।

একটি উদাহরণের মাধ্যমে সম্পদের ধারণাটি বোঝা যাক।

পোস্ট কন্ট্রোলার ক্লাসের show() পদ্ধতি অ্যাক্সেস করা।

ধরুন আমরা PostController.php ফাইলের show() মেথডকে কল করতে চাই । এটি করতে, show() পদ্ধতিতে কোড যোগ করুন। আমি show() পদ্ধতিতে নিম্নলিখিত কোড যোগ করেছি।

  1. public function show($id)  
  2. {  
  3. return "show method is called and ID is : ". $id;  
  4. }  

আমরা জানি যে posts.show- এর URI হল posts/{posts}, যার মানে PostController ক্লাসের show() মেথড অ্যাক্সেস করার জন্য আমাদের প্যারামিটারটিও প্রবেশ করতে হবে ।

ধরুন আমি URL টি 'localhost/laravelproject/public/posts/58' হিসাবে প্রবেশ করিয়েছি তাহলে আউটপুট হবে।

পোস্ট কন্ট্রোলার ক্লাসের create() পদ্ধতি অ্যাক্সেস করা।

স্টেপ-০১: প্রথমে আমাদের create() পদ্ধতিতে কোড যোগ করতে হবে। আমি নিম্নলিখিত কোড যোগ করেছি।

  1. public function create()  
  2. {  
  3.      return "This is the create method";  
  4. }  

যেহেতু আমরা জানি যে posts.create- এর URI হল posts/create, তাই create() পদ্ধতি অ্যাক্সেস করার URL হবে 'localhost/laravelproject/public/posts/create'

স্টেপ-০২: ব্রাউজারে URL 'localhost/laravelproject/public/posts/create' লিখুন তারপর আউটপুট হবে।

একাধিক কন্ট্রোলার জন্য রুট নিবন্ধন:

আমরা resources() পদ্ধতিতে একটি অ্যারে পাস করে একাধিক কন্ট্রোলারের জন্য রুট নিবন্ধন করতে পারি । ধরুন আমি দুটি কন্ট্রোলারের জন্য রুট নিবন্ধন করতে চাই যেমন PostController এবং StudentController । এটি অর্জনের জন্য নিম্নলিখিত পদক্ষেপগুলি রয়েছে।

স্টেপ-০১: প্রথমে আপনাকে নিম্নলিখিত কমান্ডগুলি ব্যবহার করে PostController এবং StudentController তৈরি করতে হবে।

  1. Php artisan make:controller PostController;  // to create the PostController.  
  2. Php artisan make:controller StudentController;  // to create the StudentController.  

স্টেপ-০২: রুট নিবন্ধন করতে web.php ফাইলে নিচে দেওয়া কোড যোগ করুন ।

  1. route::resources(  
  2. ['posts'=>'PostController',  
  3. 'student'=>'StudentController']  
  4. );  

স্টেপ-০৩: গিট ব্যাশ উইন্ডোতে php artisan route:list কমান্ডটি লিখুন ।

উপরের স্ক্রিনটি দেখায় যে PostController এবং StudentController উভয়ের রুট নিবন্ধিত।

আংশিক সম্পদ রুট:

যখন আমরা সমস্ত পদ্ধতির জন্য রুট নিবন্ধন করতে চাই না তখন আমরা শুধুমাত্র সেই ফাংশনগুলি নির্দিষ্ট করে তা করতে পারি যা কন্ট্রোলার পরিচালনা করতে পারে।

আংশিক রিসোর্স রুট তৈরি করার পদক্ষেপ:

স্টেপ-০১: প্রথমে আমরা নিচের কমান্ডটি ব্যবহার করে StudentController তৈরি করি।

  1. php artisan make:controller StudentController;  

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

  1. Route::resource('student','StudentController',['only' => ['create','show']]);  

স্টেপ-০৩: উপরের কোডটি নির্দিষ্ট পদ্ধতির জন্য রুটগুলি নিবন্ধিত করেছে কিনা তা যাচাই করতে গিট ব্যাশ উইন্ডোতে 'php artisan route:list' কমান্ডটি টাইপ করুন।

উপরের স্ক্রীনটি দেখায় যে create() এবং show() পদ্ধতির রুট তৈরি করা হয়েছে।

রিসোর্স রুটের নামকরণ:

কন্ট্রোলারের সমস্ত পদ্ধতির একটি ডিফল্ট রুটের নাম আছে, কিন্তু Laravel আপনাকে নাম অ্যারে পাস করে রুটের নামগুলি ওভাররাইড করতে দেয়। নাম অ্যারেতে সেই রুটগুলির নাম রয়েছে যা আপনি আপনার পছন্দের নির্দিষ্ট করতে চান।

আসুন একটি উদাহরণের মাধ্যমে 'Naming Resource Routes' বুঝতে পারি।

রিসোর্স রুটের নাম দিতে আমরা web.php ফাইলে নিচের কোড যোগ করতে পারি ।

  1. Route::resource('student''StudentController',['names' => ['create' =>'student.build']]); 

এখন গিট ব্যাশ উইন্ডোতে php artisan route:list কমান্ডটি লিখুন ।

উপরের স্ক্রীনটি দেখায় যে create() পদ্ধতির রুটের নামটি student.build হিসাবে পরিবর্তন করা হয়েছে এবং এর ডিফল্ট নাম ছিল student.create

রিসোর্স রুট প্যারামিটার নামকরণ:

Route::resource() মেথড স্বয়ংক্রিয়ভাবে সমস্ত রিসোর্স রুটের জন্য রুট প্যারামিটার তৈরি করে কিন্তু আমরা প্যারামিটার অ্যারে ব্যবহার করে রুট প্যারামিটার ওভাররাইড করতে পারি। প্যারামিটার অ্যারে হল রিসোর্সের নাম এবং রুট প্যারামিটারের একটি সহযোগী অ্যারে।

web.php ফাইলে নিম্নলিখিত কোড যোগ করে আমরা রুট প্যারামিটারগুলি ওভাররাইড করতে পারি।

  1. Route::resource('student''StudentController', ['parameters' => ['student' => 'admin_student']]);  

উপরের কোডটি রুট প্যারামিটার নির্ধারণ করে যেমন admin_student স্টুডেন্ট রিসোর্স।

সমস্ত রুট প্যারামিটারের তালিকা পরীক্ষা করতে, আমরা নীচের কমান্ডটি ব্যবহার করি।

php artisan route:list.

উপরের স্ক্রীনটি দেখায় যে admin_student প্যারামিটার একটি রুটে যোগ করা হয়েছে।

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

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

Leave a Comment