Laravel: Routing to a Single Controller Method | ( Bangla ) — Part 3

Abu Sayed
3 min readFeb 15, 2024

--

লারাভেল রাউটিং: কন্ট্রোলারের মেথড কে কল করা (বাংলা) — পার্ট ৩ (Laravel: Routing to a Single Controller Method | ( Bangla ) — Part 3)

লারাভেল রাউটিং: কন্ট্রোলারের মেথড কে কল করা (বাংলা) — পার্ট ৩ (Laravel: Routing to a Single Controller Method | ( Bangla ) — Part 3)

লারাভেল রাউটিং এর মাধ্যমে কীভাবে কন্ট্রোলারের একটি নির্দিষ্ট মেথড কে কল করা যায় সে সম্পর্কে বাংলায় একটি টিউটোরিয়াল। উদাহরণসহ শেখানো হয়েছে।

লক্ষ্য: একই কন্ট্রোলারের একটি মেথডে বিভিন্ন রুট ম্যাপ করা।

উপায় ১: Route::get() সহ বহু রুট:

PHP

// routes/web.php
Route::get('/products', 'ProductController@index');
Route::get('/products/{id}', 'ProductController@show');
Route::get('/products/{id}/edit', 'ProductController@edit');

এখানে, ProductController এর index, show, এবং edit মেথডগুলিতে products রুটের বিভিন্ন ভ variasition ম্যাপ করা হয়েছে।

উপায় ২: Route::controller() ব্যবহার:

PHP

// routes/web.php
Route::controller('products', 'ProductController');

একটি কন্ট্রোলারের সমস্ত পাবলিক মেথডে রুট তৈরি করতে Route::controller() ব্যবহার করুন। উদাহরণস্বরূপ:

PHP

// ProductController.php
public function index()
{
// ...
}
public function show($id)
{
// ...
}
public function edit($id)
{
// ...
}

এখানে, ProductController এর index, show, এবং edit মেথডগুলিতে স্বয়ংক্রিয়ভাবে /products, /products/{id}, এবং /products/{id}/edit রুট তৈরি হবে।

উপায় ৩: Route::resource() ব্যবহার (সম্পদ-ভিত্তিক রুটিং):

PHP

// routes/web.php
Route::resource('products', 'ProductController');

একটি সম্পদ (যেমন, পণ্য) এর জন্য স্ট্যান্ডার্ড CRUD অপারেশনে রুট তৈরি করতে Route::resource() ব্যবহার করুন।

মনে রাখুন:

  • আপনি এই পদ্ধতিগুলিকে একসাথে মিশিয়ে ব্যবহার করতে পারেন।
  • Route::controller() এবং Route::resource() পদ্ধতিতে, মেথডের নামগুলি স্বয়ংক্রিয়ভাবে রুটের অংশ হিসাবে ব্যবহৃত হয়।

কন্ট্রোলার মেথডে রুটিং

লারাভেলে আপনি একই কন্ট্রোলারের একাধিক মেথডের সাথে রুটিং করতে পারেন। এটি আপনার অ্যাপ্লিকেশনের কোডকে আরও সুশৃंखল এবং পরিচালনা করতে সাহায্য করে।

উদাহরণ:

একটি পণ্য ব্যবস্থাপনা অ্যাপ্লিকেশনের কথা চিন্তা করুন। আপনার একটি ProductController থাকতে পারে যা পণ্য তৈরি, দেখা, আপডেট এবং মুছে ফেলার জন্য মেথড ধারণ করে। নিচের উদাহরণটিতে দেখুন:

PHP

// app/Http/Controllers/ProductController.php
class ProductController extends Controller
{
public function create()
{
// পণ্য তৈরির ফর্ম দেখান
}
public function store(Request $request)
{
// পণ্য তৈরি করুন এবং সফলতার পৃষ্ঠায় রিডিরেক্ট করুন
}
public function show($id)
{
// নির্দিষ্ট আইডি সহকারে পণ্য দেখান
}
public function edit($id)
{
// নির্দিষ্ট আইডি সহকারে পণ্য আপডেট করার ফর্ম দেখান
}
public function update(Request $request, $id)
{
// নির্দিষ্ট আইডি সহকারে পণ্য আপডেট করুন এবং সফলতার পৃষ্ঠায় রিডিরেক্ট করুন
}
public function destroy($id)
{
// নির্দিষ্ট আইডি সহকারে পণ্য মুছে ফেলুন এবং লিস্টিং পৃষ্ঠায় রিডিরেক্ট করুন
}
}

রুটিং সংজ্ঞা:

এই মেথডগুলোতে রুটিং করার জন্য, আপনি routes/web.php ফাইলে নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:

PHP

// routes/web.php
Route::prefix('products')->group(function () {
Route::get('create', 'ProductController@create');
Route::post('store', 'ProductController@store');
Route::get('{id}', 'ProductController@show');
Route::get('{id}/edit', 'ProductController@edit');
Route::put('{id}', 'ProductController@update');
Route::delete('{id}', 'ProductController@destroy');
});

এই কোডটি products প্রিফিক্স সহ রুটগুলো সংজ্ঞায়িত করে। প্রতিটি রুট একটি নির্দিষ্ট মেথডের সাথে সংযুক্ত।

সুবিধা:

এই পদ্ধতির সুবিধা হলো:

  • কোডটি আরও পরিচালনাযোগ্য এবং বোঝা সহজ হয়।
  • একই কন্ট্রোলারে সম্পর্কিত লজিক একসাথে থাকে।
  • রুটগুলো পড়া এবং বজায় রাখা সহজ হয়।

অন্যান্য পদ্ধতি:

একটি কন্ট্রোলার মেথডে রুটিং করার জন্য অন্যান্য পদ্ধতিও রয়েছে, যেমন:

  • Resource Routing: লারাভেলের রিসোর্স রুটিং ব্যবহার করে আপনি প্রচলিত CRUD অপারেশনগুলোর জন্য সহজেই রুট সংজ্ঞায়িত করতে পারেন।
  • Closure Routes: আপনি ক্লোজার ফাংশন ব্যবহার করে রুট সংজ্ঞায়িত করতে পারেন।

লারাভেল ১০ এ রাউটিং এর মাধ্যমে একটি কন্ট্রোলারের মেথড কে কল করা নিয়ে একটি উদাহরণ দিচ্ছি

<?php
namespace App\Http\Controllers;use Illuminate\Http\Request;class HomeController extends Controller
{
public function index()
{
return "Home index method called";
}
public function about()
{
return "About method called";
}
}
<?php 
use App\Http\Controllers\HomeController;// হোম কন্ট্রোলারের ইনডেক্স মেথড কল 
Route::get('/home', [HomeController::class, 'index']);
// অ্যাবাউট মেথড কল
Route::get('/about', [HomeController::class, 'about']);

উপরের উদাহরণে, আমরা HomeController@index এবং HomeController@about কে রাউট করেছি। এভাবে রাউটিং এর মাধ্যমে কন্ট্রোলারের প্রত্যেকটি মেথড কে ইচ্ছা মত কল করা যায়।

আরও শেখা:

লারাভেল ডকুমেন্টেশনে রুটিং সম্পর্কে আরও জানুন: https://laravel.com/docs/10.x/routing

--

--

Abu Sayed

Bangladeshi Full Stack Web Dev, Sys Admin & DevOps Engineer. Skills: Data analysis, SQL, Kubernetes. Python, PHP & Laravel. Me on: bd.linkedin.com/in/imabusayed