লারাভেল নিয়ে এর আগের লেখা গুলোঃ
- উইন্ডোজে লারাভেল / Laravel ইন্সটল বা প্রজেক্ট তৈরি
- লারাভেল ভিউ এবং রাউটস
- লারাভেল এবং ডেটাবেজ
- লারাভেল – ভিউতে ডেটা পাস করা
- লারাভেল – কোয়েরি বিল্ডার
- লারাভেল Eloquent
আমরা জেনেছি কিভাবে রাউটস কনফিগার করতে হয়, কিভাবে ভিউ তৈরি করতে হয়, ডেটাবেজ কানেক্ট করতে হয়, কোয়েরী করতে হয় ইত্যাদি। এখন আমরা জানব কন্ট্রোলার সম্পর্কে। আমরা যদি রাউটস ফাইলটি দেখি, দেখব ওয়েব সাইটের প্রতিটা সেকশনের জন্য অনেক গুলো কোড লিখতে হচ্ছে। আর আমরা যখন অনেক বড় প্রজেক্ট তৈরি করব, তখন কেমন বিশ্রিই না দেখতে হবে। কোড গুলোকে সুন্দর রাখতে আমরা ব্যবহার করব কন্ট্রোলার। কন্ট্রোলার ভিউ এবং প্রজেক্টের ব্রেইনের মধ্যে একটা ব্রিজ তৈরি করে দেয়। যখন ইউজার কোন রিকোয়েস্ট করবে, কন্ট্রোলার ডেটা কালেক্ট করে ভিউতে পাস করবে। যে কোড গুলো আমরা রাউটস ফাইলে লিখেছি, এগুলো সুন্দর ভাবে লেখার জন্যই কন্ট্রোলার।
কন্ট্রোলার গুলো সাধারনত রাখা হয় Project>app>Http>Controllers ফোল্ডারের মধ্যে। আমরা ম্যানুয়ালি কন্ট্রোলার তৈরি করতে পারি। অথবা আমরা php artisan এর মাধ্যমে জেনারেট করতে পারি। তার জন্যঃ
php artisan make:controller TasksController
এখানে TasksController হচ্ছে কন্ট্রলারের নাম। কমান্ডটি রান করলে TasksController.php ফাইলটি Project>app>Http>Controllers ফোল্ডারে যুক্ত হবে।
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; class TasksController extends Controller { // }
যেমন আমরা টাস্ক লিস্ট দেখানোর জন্য রাউটস ফাইলে লিখতে হবেঃ
Route::get('/', 'TasksController@index');
এখানে TasksController হচ্ছে কন্ট্রোলারের নাম। আর index হচ্ছে মেথড। রাউটস ফাইল থেকে কোড গুলো নিয়ে TasksController এ index মেথডে যুক্ত করে দিবঃ
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Task; class TasksController extends Controller { public function index(){ $tasks = Task::all(); return view('welcome' , compact('tasks')); } }
তখন রুটস ফাইল আগের থেকে অনেক ক্লিন দেখাবে। টাস্ক লিস্ট এবং সিঙ্গেল টাস্ক এর জন্য রুটস ফাইলঃ
<?php Route::get('/', 'TasksController@index'); Route::get('/{id}', 'TasksController@single');
TasksController ফাইলটিঃ
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Task; class TasksController extends Controller { public function index(){ $tasks = Task::all(); return view('welcome' , compact('tasks')); } public function single($id){ $task = Task::find($id); return view('task' , compact('task')); } }
আমরা মাত্র একটি ফিচার নিয়ে কাজ করেছি। তাই একটি কন্ট্রোলার। এখানে আমরা আরো মেথড যুক্ত করতে পারি। আবার আরো নতুন কন্ট্রোলার তৈরি করতে পারব এভাবে।