5 أساسيات Laravel 11: Controllers

في Laravel، تتيح لك controllers تجميع منطق معالجة الطلبات ذات الصلة في فصل واحد. هذا يجعل الكود أكثر تنظيماً وأسهل في الصيانة. سيغطي هذا البرنامج التعليمي أساسيات إنشاء واستخدام controllers في Laravel 11.
مقدمة عن Controllers
بدلاً من تعريف كل منطق معالجة الطلبات كإغلاق في ملفات المسارات الخاصة بك، يمكنك تنظيم هذا السلوك باستخدام فصول controllers. يمكن للـcontrollers تجميع منطق معالجة الطلبات ذات الصلة في فصل واحد. على سبيل المثال، يمكن أن يتعامل UserController
مع جميع الطلبات الواردة المتعلقة بالمستخدمين، بما في ذلك عرض، إنشاء، تحديث وحذف المستخدمين.
كتابة Controllers
Controllers الأساسية
لإنشاء controller جديد بسرعة، استخدم أمر Artisan make:controller
. بشكل افتراضي، يتم تخزين controllers في دليل app/Http/Controllers
:
php artisan make:controller UserController
يمكن أن يحتوي controller الأساسي على أي عدد من الطرق العامة التي تستجيب لطلبات HTTP الواردة:
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
بمجرد كتابة فصل controller وطريقة، يمكنك تعريف مسار إلى طريقة controller على النحو التالي:
use App\Http\Controllers\UserController;
Route::get('/user/{id}', [UserController::class, 'show']);
عندما يتطابق طلب وارد مع URI المسار المحدد، سيتم استدعاء طريقة show
في فصل UserController
، وسيتم تمرير معلمات المسار إلى الطريقة.
Controllers ذات الإجراء الواحد
إذا كانت عملية controller معقدة بشكل خاص، فقد تجد أنه من المناسب تكريس فصل كامل لعملية واحدة. لتحقيق ذلك، يمكنك تعريف طريقة __invoke
واحدة داخل controller:
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class ShowProfile extends Controller
{
public function __invoke($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
ثم يمكنك تسجيل controller مع المسار على النحو التالي:
use App\Http\Controllers\ShowProfile;
Route::get('/user/{id}', ShowProfile::class);
Middleware في Controllers
لتعيين middleware إلى controller، استخدم طريقة middleware
داخل منشئ controller. يمكن تعيين middleware لإجراء محدد في controller أو لكامل controller:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function show($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
Resource Controllers
تجعل resource controllers من السهل التعامل مع جميع عمليات CRUD الشائعة لمورد في سطر واحد من الكود. لإنشاء resource controller، استخدم الخيار --resource
:
php artisan make:controller PhotoController --resource
سينشئ هذا الأمر controller بطرق للتعامل مع جميع عمليات CRUD. يمكنك تسجيل مسار resource controller باستخدام طريقة Route::resource
:
use App\Http\Controllers\PhotoController;
Route::resource('photos', PhotoController::class);
تعرف على المزيد حول controllers في Laravel من التوثيق الرسمي لـ Laravel.
خاتمة
تعد controllers ميزة قوية في Laravel تساعد في الحفاظ على تنظيم الكود وسهولة إدارته. غطى هذا البرنامج التعليمي كيفية إنشاء واستخدام controllers في Laravel 11. لمزيد من المعلومات التفصيلية، راجع التوثيق الرسمي لـ Laravel.
تمنياتنا ببرمجة سعيدة مع Laravel 11!
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.