مارک پلاس

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

کنترلر لاراول

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

کنترلر لاراول
کنترلر لاراول

کنترلرها در لاراول به شما این امکان را می‌دهند که منطق برنامه‌تان را از ویوها جدا کرده و ساختار کد شما را مرتب‌تر و قابل نگهداری‌تر کنید. کنترلرها وظیفه مدیریت درخواست‌ها، فراخوانی مدل‌ها و بازگرداندن پاسخ‌ها (ویوها یا داده‌ها) را بر عهده دارند.

در اینجا توضیح می‌دهم که چطور می‌توانید کنترلر در لاراول بسازید، از آن استفاده کنید و با آن کار کنید.



🧑‍💻 کنترلر در لاراول



1. ایجاد کنترلر در لاراول

برای ساخت یک کنترلر در لاراول، می‌توانید از دستور artisan استفاده کنید. دو نوع کنترلر اصلی در لاراول وجود دارد: کنترلر ساده و کنترلر منابع.

1.1. ایجاد یک کنترلر ساده

برای ایجاد یک کنترلر ساده، از دستور زیر استفاده می‌کنید:

bash
php artisan make:controller MyController

این دستور یک فایل کنترلر به نام MyController.php در پوشه app/Http/Controllers ایجاد می‌کند.

1.2. ایجاد یک کنترلر منابع (Resource Controller)

اگر می‌خواهید یک کنترلر که عملیات CRUD (ایجاد، خواندن، به‌روزرسانی و حذف) را انجام دهد، بسازید، می‌توانید از دستور resource استفاده کنید:

bash
php artisan make:controller PostController --resource

این دستور یک کنترلر با تمام متدهای لازم برای عملیات CRUD ایجاد می‌کند.


2. ساختار کنترلر

در فایل کنترلر، متدهایی برای پاسخ به درخواست‌های مختلف می‌سازید. برای مثال، متدهای index, show, create, store, edit, update, و destroy برای مدیریت عملیات CRUD.

2.1. مثال از کنترلر ساده

php
namespace App\Http\Controllers; use Illuminate\Http\Request; class MyController extends Controller { // متد برای نمایش ویو public function index() { return view('welcome'); } // متد برای دریافت داده‌ها public function show($id) { return "Show data for ID: " . $id; } }

2.2. کنترلر منابع

اگر از کنترلر منابع استفاده کنید، لاراول به طور خودکار متدهایی برای عملیات CRUD برای شما ایجاد می‌کند.

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 create() { return view('posts.create'); } // ذخیره پست جدید public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|max:255', 'content' => 'required', ]); Post::create($validated); return redirect()->route('posts.index'); } // نمایش یک پست خاص public function show($id) { $post = Post::findOrFail($id); return view('posts.show', compact('post')); } // نمایش فرم ویرایش پست public function edit($id) { $post = Post::findOrFail($id); return view('posts.edit', compact('post')); } // به‌روزرسانی پست public function update(Request $request, $id) { $validated = $request->validate([ 'title' => 'required|max:255', 'content' => 'required', ]); $post = Post::findOrFail($id); $post->update($validated); return redirect()->route('posts.index'); } // حذف پست public function destroy($id) { $post = Post::findOrFail($id); $post->delete(); return redirect()->route('posts.index'); } }

در اینجا:

  • متد index() برای نمایش تمام پست‌ها است.

  • متد create() برای نمایش فرم ایجاد پست است.

  • متد store() برای ذخیره پست جدید در پایگاه داده است.

  • متد show() برای نمایش یک پست خاص است.

  • متد edit() برای نمایش فرم ویرایش پست است.

  • متد update() برای به‌روزرسانی اطلاعات پست است.

  • متد destroy() برای حذف پست است.


3. تعریف روت برای کنترلر

برای استفاده از کنترلرها در لاراول، باید روت‌های مربوطه را در فایل routes/web.php تعریف کنید.

3.1. روت برای کنترلر ساده

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

3.2. روت برای کنترلر منابع

برای یک کنترلر منابع، می‌توانید از دستور Route::resource استفاده کنید که به طور خودکار تمام روت‌های CRUD را برای شما ایجاد می‌کند.

php
use App\Http\Controllers\PostController; Route::resource('posts', PostController::class);

این دستور تمام روت‌های زیر را ایجاد می‌کند:

  • GET /postsindex()

  • GET /posts/createcreate()

  • POST /postsstore()

  • GET /posts/{id}show()

  • GET /posts/{id}/editedit()

  • PUT/PATCH /posts/{id}update()

  • DELETE /posts/{id}destroy()


4. کنترلرهای با استفاده از میانه‌روها (Middleware)

در لاراول، می‌توانید از میانه‌روها (Middleware) برای انجام عملیات قبل یا بعد از درخواست‌ها استفاده کنید. این میانه‌روها می‌توانند برای بررسی احراز هویت، مجوز دسترسی و موارد دیگر استفاده شوند.

4.1. اعمال میانه‌رو به کنترلر

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

php
class PostController extends Controller { // اعمال میانه‌رو به تمام متدها public function __construct() { $this->middleware('auth'); } // متدهای مختلف کنترلر... }

در اینجا:

  • میانه‌رو auth به تمام متدهای کنترلر اعمال می‌شود و فقط کاربرانی که وارد سیستم شده‌اند می‌توانند به متدها دسترسی داشته باشند.


5. ارسال داده‌ها از کنترلر به ویو

برای ارسال داده‌ها از کنترلر به ویو، می‌توانید از متد view استفاده کنید:

php
return view('posts.index', ['posts' => $posts]);

همچنین می‌توانید از متد compact برای ارسال متغیرها به ویو استفاده کنید:

php
return view('posts.index', compact('posts'));

💡 جمع‌بندی

  • کنترلرها در لاراول برای مدیریت درخواست‌ها و منطق برنامه استفاده می‌شوند.

  • شما می‌توانید با استفاده از دستور php artisan make:controller یک کنترلر بسازید و سپس متدهای مختلف آن را برای عملیات مختلف (مانند CRUD) تعریف کنید.

  • روت‌ها باید به کنترلرها متصل شوند تا درخواست‌ها به متدهای مناسب هدایت شوند.

  • میانه‌روها به شما این امکان را می‌دهند که عملیات خاصی را قبل یا بعد از درخواست‌ها انجام دهید.

  • داده‌ها را می‌توانید به راحتی از کنترلر به ویو ارسال کنید.

اگر سوال یا مشکلی دارید، خوشحال می‌شوم کمک کنم!

محتوای مرتبط

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