مارک پلاس

تکنولوژی نوین اینترنتی

مفهوم کنترلر (Controller) در لاراول

دسته‌بندی‌ها

مفهوم کنترلر (Controller) در لاراول
کنترلر (Controller) لاراول

در لاراول، Controller (کنترلر) یکی از اجزای اصلی معماری MVC است و نقش واسط بین Model (مدل داده‌ها) و View (نمایش به کاربر) را ایفا می‌کند. در این مقاله به طور کامل و کاربردی با مفهوم کنترلر در لاراول آشنا می‌شویم.


🎮 کنترلر در لاراول چیست؟

کنترلر‌ها مسئول مدیریت منطق درخواست‌های ورودی هستند. وقتی کاربر از طریق Route به یک URL خاص دسترسی پیدا می‌کند، این درخواست ابتدا به کنترلر مربوطه می‌رود، داده‌ها را از مدل گرفته، پردازش می‌کند و در نهایت به View ارسال می‌کند.


🛠 ایجاد کنترلر

برای ساخت کنترلر از Artisan استفاده می‌کنیم:

bash
php artisan make:controller PostController

📂 مسیر ایجاد کنترلر:

swift
app/Http/Controllers/PostController.php

📝 یک مثال ساده از کنترلر

php
namespace App\Http\Controllers; use App\Models\Post; use Illuminate\Http\Request; class PostController extends Controller { public function index() { $posts = Post::all(); return view('posts.index', compact('posts')); } public function show($id) { $post = Post::findOrFail($id); return view('posts.show', compact('post')); } }

🔗 اتصال کنترلر به Route

php
use App\Http\Controllers\PostController; Route::get('/posts', [PostController::class, 'index']); Route::get('/posts/{id}', [PostController::class, 'show']);

📦 کنترلر Resource (برای CRUD کامل)

برای ساخت کنترلر Resource:

bash
php artisan make:controller PostController --resource

این کنترلر شامل 7 متد زیر خواهد بود:

متدوظیفه
index()نمایش لیست
create()نمایش فرم ساخت
store()ذخیره داده جدید
show($id)نمایش یک داده خاص
edit($id)نمایش فرم ویرایش
update(Request $request, $id)به‌روزرسانی داده
destroy($id)حذف داده

📌 اتصال به Route resource:

php
Route::resource('posts', PostController::class);

🧠 کنترلر با Middleware

می‌توان در کنترلر تعیین کرد که فقط کاربران خاصی دسترسی داشته باشند:

php
class PostController extends Controller { public function __construct() { $this->middleware('auth')->except(['index', 'show']); } }

🔄 استفاده مجدد از منطق در کنترلرها

مثال با متد خصوصی:

php
private function validatePost(Request $request) { return $request->validate([ 'title' => 'required', 'body' => 'required', ]); }

✅ جمع‌بندی

🔹 کنترلرها بخش اصلی منطق برنامه در لاراول هستند
🔹 از طریق Route به آن‌ها دسترسی داده می‌شود
🔹 می‌توان از کنترلرهای معمولی یا resource برای سازمان‌دهی بهتر استفاده کرد
🔹 قابلیت استفاده از Middleware و متدهای داخلی برای مرتب‌سازی کدها را دارند

محتوای مرتبط

پست‌های مرتبط