بخش اول - ایجاد و استفاده از کنترلرها
کنترلرها (Controllers) یکی از اجزای اصلی معماری MVC (Model-View-Controller) هستند. کنترلرها وظیفه دارند درخواستهای ورودی را مدیریت کرده و پاسخهای مناسب را به سمت کاربر ارسال کنند.
تعریف کنترلرها:
کنترلرها در لاراول فایلهایی هستند که در پوشه app/Http/Controllers قرار میگیرند و شامل کلاسهایی هستند که مسئولیت کنترل جریان درخواستها و پاسخها را بر عهده دارند. به طور کلی، کنترلرها به منظور جداسازی منطق تجاری (Business Logic) از منطق نمایش (Presentation Logic) استفاده میشوند.
ایجاد کنترلر:
برای ایجاد یک کنترلر در لاراول، میتوانید از کامند Artisan استفاده کنید. به عنوان مثال:
php artisan make:controller UserController
این دستور یک کنترلر جدید به نام UserController در پوشه app/Http/Controllers ایجاد میکند.
انواع کنترلرها:
لاراول چندین نوع کنترلر را پشتیبانی میکند:
1- کنترلرهای پایه (Plain Controllers): کنترلرهای سادهای که شامل متدهای مختلف برای مدیریت درخواستها هستند.
2- کنترلرهای منبع (Resource Controllers): کنترلرهایی که برای عملیات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) بهینه شدهاند. میتوانید با استفاده از دستور زیر یک کنترلر منبع ایجاد کنید:
php artisan make:controller UserController --resource
این کنترلر شامل 7 متد پیشفرض است:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
// show users list
}
public function create()
{
// show create form
}
public function store(Request $request)
{
// store user data
}
public function show($id)
{
// show user data
}
public function edit($id)
{
// show edit form
}
public function update(Request $request, $id)
{
// update user data
}
public function destroy($id)
{
// delete user
}
}
3- کنترلرهای قابل توزیع (Singleton Controllers): کنترلرهایی که تنها یک نمونه از آنها در طول عمر درخواست ایجاد میشود.
php artisan make:controller SingletonController --invokable
نمونه کنترلر برای انجام یک عملیات:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SingletonController extends Controller
{
public function __invoke()
{
//
}
}
مسیر دهی کنترلرها در روتینگ
برای اتصال یک route به کنترلر روش های متنوعی وجود دارد که در ادامه بررسی خواهیم کرد:
1-
Route::get("/users", "app\Http\Controllers\UserController@index");در مثال بالا پارامتر دوم به متد index از کنترلر UserController اشاره دارد.
ابتدا نام کامل کنترلر سپس @ و بعد نام متد.
2-
use app\Http\Controllers\UserController;
Route::get("/users", [UserController::class, 'index']);
روش بالا یک روش دیگر برای فراخوانی یک متد از کنترلر است، به این صورت که در یک آرایه، اندیس صفر برابر کلاس کنترلر و اندیس یک برابر نام متد.
برای فراخوانی کنترلر های resource میتوانید از متد دیگری از فساد Route استفاده کنید.
Route::resource('users', UserController::class);این متد به صورت خودکار 7 متد کنترلر را مسیردهی می کند.
همچنین متد دیگری از فساد Route برای کنترلر ها در دسترس است:
Route::controller(UserController::class)->group(function(){
Route::get("/users", 'index');
});در روش بالا یک گروه برای یک کنترلر ایجاد می کنید و پس از آن تنها نام متد کنترلر را به عنوان اکشن وارد می کنید.
#laravel #فصل_۲
@AmirhDeveloper
.