Laravel: Routing and Controllers: Basics | ( Bangla ) — Part 1
লারাভেল রাউটিং এবং কন্ট্রোলারঃ বেসিক বাংলা টিউটোরিয়াল — পার্ট ১ ( Laravel: Routing and Controllers: Basics |( Bangla ) — Part 1 )
লারাভেল ফ্রেমওয়ার্ক এর রাউটিং এবং কন্ট্রোলারগুলো কীভাবে কাজ করে সে সম্পর্কে বাংলায় একটি টিউটোরিয়াল। শুরুর পর্বে রাউটিং এবং কন্ট্রোলারের বেসিক বিষয়গুলো শিখবো।
রুটিং (Routing)
একটি ওয়েব অ্যাপ্লিকেশনে রুটিং হলো ব্যবহারকারীর রিকুয়েস্টের (যেমন, একটি URL) সাথে সঠিক কন্ট্রোলার এবং মেথডের ম্যাপিং প্রক্রিয়া। এটি লারাভেলকে নির্ধারণ করতে সাহায্য করে যে কোন কন্ট্রোলারের কোন মেথডটি কল করা উচিত একটি নির্দিষ্ট রিকুয়েস্টের জন্য।
উদাহরণ:
PHP
// routes/web.php ফাইলে
Route::get('/', function () {
return view('welcome');
});
Route::get('/about-us', function () {
return 'আমাদের সম্পর্কে পৃষ্ঠা';
});
Route::get('/contact', 'ContactController@index');
এখানে, /
রুটটি welcome
ব্লেড টেম্পলেটকে রেন্ডার করে। /about-us
রুটটি একটি স্ট্রিং ফেরত দেয়। এবং, /contact
রুটটি ContactController
এর index
মেথডকে কল করে।
কন্ট্রোলার (Controllers)
লারাভেল কন্ট্রোলারগুলো এমন ক্লাস যা আপনার অ্যাপ্লিকেশনের লজিক ধারণ করে। রুটিংয়ের মাধ্যমে কোনো নির্দিষ্ট রুটে রিকুয়েস্ট আসলে, সেই রুটের সাথে সংযুক্ত কন্ট্রোলারের সংশ্লিষ্ট মেথডটি কল করা হয়।
উদাহরণ:
PHP
// app/Http/Controllers/ContactController.php
class ContactController extends Controller
{
public function index()
{
$data = [
'title' => 'যোগাযোগ',
'email' => 'contact@example.com',
];
return view('contact', $data);
}
}
এই উদাহরণে, ContactController
এর index
মেথডটি /contact
রুটের জন্য কাজ করে। এটি ডেটা প্রস্তুত করে এবং contact
ব্লেড টেম্পলেটকে রেন্ডার করে।
ContactController@index এ @ চিহ্নটি:
@ চিহ্নটি লারাভেলের “কন্ট্রোলার মেথড রেফারেন্সিং” সিনট্যাক্সের অংশ। এটি কন্ট্রোলারের নাম এবং মেথডের নামকে আলাদা করে।
উদাহরণে:
- ContactController হলো কন্ট্রোলারের নাম।
- index হলো মেথডের নাম।
@ চিহ্নটি ব্যবহার করে, আমরা স্পষ্টভাবে নির্দেশ করতে পারি যে আমরা কোন কন্ট্রোলারের কোন মেথডটি কল করতে চাই।
এই সিনট্যাক্সের সুবিধা:
- এটি কোডকে আরও স্পষ্ট এবং বোধগম্য করে তোলে।
- এটি টাইপো এবং ভুলের সম্ভাবনা কমিয়ে দেয়।
- এটি কোডের রিফ্যাক্টরিং সহজ করে তোলে।
বিকল্প সিনট্যাক্স:
আপনি @
চিহ্নের পরিবর্তে ::
অপারেটর ব্যবহার করতে পারেন।
PHP
Route::get('/contact', 'ContactController::index');
এই দুটি সিনট্যাক্স সমানভাবে কাজ করে। তবে, @
চিহ্নটি লারাভেলের ডেভেলপারদের দ্বারা বেশি ব্যবহৃত হয়।
লারাভেল এর রাউটিং এবং কন্ট্রোলার নিয়ে বাংলায় একটি নমুনা প্রোগ্রাম তৈরি করি
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
// একটি সরল রাউট যা শুধু /home প্রদর্শন করে
Route::get('/home', function () {
return 'স্বাগতম হোম পৃষ্ঠায়!';
});
// একটি কন্ট্রোলার ক্লাস তৈরি
class HomeController {
// index ফাংশন
public function index() {
return 'কন্ট্রোলার থেকে স্বাগতম';
}
}
// কন্ট্রোলার রাউটিং
Route::get('/controller', [HomeController::class, 'index']);
এখানে আমরা দুইটি রাউট ডিফাইন করেছি। একটি সরল যা শুধু /home চেক করে। আর একটি হচ্ছে HomeController এর index ফাংশন থেকে ডাটা তুলে নেবে।
লারাভেল এর রাউটিং খুব সহজ। আমরা routes/web.php এ ডিফাইন করে থাকি আমাদের রাউটগুলো। এবং প্রতিটি রাউট একটি কন্ট্রোলার ম্যাথডের সাথে ম্যাপ করা থাকে, যাতে সেই রাউট এক্সেস করা হলে সেই ম্যাথড কাজ করে। খুবই সিম্পল!
আরও শেখা:
লারাভেল ডকুমেন্টেশনে রুটিং এবং কন্ট্রোলার সম্পর্কে আরও জানতে পারেন: https://laravel.com/docs/10.x/routing