TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #282 278
فصل دو - Controllers

بخش اول - ایجاد و استفاده از کنترلرها


کنترلرها (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
.
  • 👍 2
  • ❤ 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →