کنترلر (Controller) در لاراول به زبان ساده
کنترلرها توی لاراول به صورت یک کلاس هستن که شامل یک یا چند متد میشن که وظیفهی اصلی اونها مدیریت کردن درخواستهایی هست که به سمت برنامه میاد. ما میتونیم این درخواستها رو توی روت (Route) ها بصورت زیر هم بررسی کنیم:
Route::post(‘/books’, function(Request $request) {
App\Book::create($request->all());
return back();
});
اما همیشه مدیریت کردن درخواست به این سادگی نیست و لازمه عملیات پیچیدهتری انجام بشه. در نتیجه کدهای بیشتری باید نوشته بشه که در این صورت فایل Route ما زشت و ناخوانا میشه. راه بهتر اینه که این پیچیدگیها رو به بخشهای مجزا انتقال بدیم. کنترلرها میزبان مناسبی برای مدیریت کردن این عملیات هستن.
ساختن کنترلر
به این سادگی میتونیم یک کنترلر بسازیم. توی خط فرمان مینویسیم:
php artisan make:controller BookController
این دستور یک فایل (کلاس) توی مسیر app/Http/Controllers برنامه میسازه:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class BookController extends Controller
{
//
}
این کنترلر هنوز خالی هست و کاری انجام نمیده. ابتدا توی فایل web.php دو تا روت تعریف میکنیم که درخواستها رو به این کنترلر بفرسته:
Route::get(‘books’, ‘BookController@index’);
Route::post(‘books’, ‘BookController@store’);
روت اولی درخواستی که بصورت GET باشه رو به متد index کنترلر میفرسته و روت دومی درخواستی که بصورت POST باشه رو به متد store کنترلر میفرسته. حالا باید دو متد index و store رو توی کنترلر تعریف کنیم:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class BookController extends Controller
{
public function index()
{
return view(‘books’);
}
public function store(Request $request)
{
App\Book::create($request->all());
return back();
}
}
اینطوری برنامهی ما منظمتر، معنادارتر و منسجمتر شد.