أساسيات لارافيل: فهم بنية MVC

Amine
30/08/2024

المقدمة

لارافيل (Laravel) هو إطار عمل PHP شهير لتطوير تطبيقات الويب، يعتمد على بنية MVC (النموذج-العرض-المتحكم) لتنظيم الكود وفصله إلى مكونات منطقية مستقلة. تتيح بنية MVC للمطورين بناء تطبيقات منظمة، قابلة للصيانة، وقابلة للتوسع بسهولة. في هذا الدليل، سنقوم بشرح بنية MVC وكيفية تطبيقها في Laravel لفهم كيفية عملها وتأثيرها على هيكلية الكود الخاص بك.

ما هي بنية MVC؟

بنية MVC تتكون من ثلاث مكونات رئيسية:

  • النموذج (Model): يمثل البيانات والأعمال المنطقية المتعلقة بالتطبيق. النموذج يتعامل مع كل شيء متعلق بقاعدة البيانات، مثل جلب البيانات، تحديثها، أو حذفها.
  • العرض (View): يمثل واجهة المستخدم ويظهر البيانات للمستخدمين. العرض لا يحتوي على أي منطق تجاري، بل يعرض البيانات القادمة من النموذج.
  • المتحكم (Controller): يعمل كوسيط بين النموذج والعرض. المتحكم يستقبل طلبات المستخدم، يعالجها بالتفاعل مع النموذج، ويرسل البيانات المناسبة إلى العرض.

كيفية تطبيق MVC في Laravel

لارافيل يتبع بنية MVC بشكل صارم، مما يجعل الكود منظمًا وسهل القراءة والصيانة. دعونا نتعرف على كيفية إعداد كل مكون من هذه المكونات في Laravel.

الخطوة 1: إعداد النموذج (Model)

لإنشاء نموذج في Laravel، يمكننا استخدام Artisan، وهو سطر الأوامر الخاص بـ Laravel. لنفترض أننا نريد إنشاء نموذج لمنتج (Product):

php artisan make:model Product

هذا الأمر سيقوم بإنشاء ملف نموذج جديد في مجلد app/Models يُسمى Product.php.

مثال على النموذج:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;

    protected $fillable = ['name', 'price', 'description'];
}

في هذا النموذج، نستخدم خاصية $fillable لتحديد الحقول القابلة للتعبئة في قاعدة البيانات.

الخطوة 2: إعداد المتحكم (Controller)

المتحكم في Laravel يمكن إنشاؤه أيضًا باستخدام Artisan. لنقم بإنشاء متحكم للمنتجات (ProductController):

php artisan make:controller ProductController

سيتم إنشاء ملف متحكم جديد في مجلد app/Http/Controllers يُسمى ProductController.php.

مثال على المتحكم:

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function index()
    {
        $products = Product::all();
        return view('products.index', compact('products'));
    }

    public function create()
    {
        return view('products.create');
    }

    public function store(Request $request)
    {
        Product::create($request->all());
        return redirect()->route('products.index');
    }
}

في هذا المثال، لدينا ثلاث دوال (methods):

  • index(): لجلب جميع المنتجات وعرضها.
  • create(): لعرض نموذج إضافة منتج جديد.
  • store(): لتخزين منتج جديد في قاعدة البيانات.

الخطوة 3: إعداد العرض (View)

العروض في Laravel تُكتب باستخدام Blade، وهي محرك قوالب بسيط ومرن. لنقم بإنشاء عرض لقائمة المنتجات:

إنشاء ملف عرض جديد:

في مجلد resources/views/products/، أنشئ ملف index.blade.php.

مثال على العرض:

<!-- resources/views/products/index.blade.php -->

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>قائمة المنتجات</title>
</head>
<body>
    <h1>جميع المنتجات</h1>
    <ul>
        @foreach($products as $product)
            <li>{{ $product->name }} - {{ $product->price }}$</li>
        @endforeach
    </ul>
</body>
</html>

ربط المكونات معاً باستخدام المسارات (Routes)

لربط النموذج، المتحكم، والعرض معًا، نحتاج إلى إعداد المسارات في ملف routes/web.php:

use App\Http\Controllers\ProductController;

Route::get('/products', [ProductController::class, 'index'])->name('products.index');
Route::get('/products/create', [ProductController::class, 'create'])->name('products.create');
Route::post('/products', [ProductController::class, 'store'])->name('products.store');

الخاتمة

من خلال فهم بنية MVC واستخدامها في Laravel، يمكنك تطوير تطبيقات ويب نظيفة ومنظمة. يساعدك هذا النظام على الفصل بين منطق الأعمال (Business Logic) وواجهة المستخدم، مما يجعل الكود أسهل في القراءة والصيانة والتطوير المستقبلي. ابدأ الآن بتطبيق هذه المفاهيم في مشروعك التالي واستمتع بالقوة والمرونة التي يوفرها Laravel.

تأكد من متابعة المستندات الرسمية للارافيل لتوسيع معرفتك واستكشاف المزيد من الميزات المتقدمة لبناء تطبيقات ويب حديثة ومتكاملة.

التعليقات

اترك تعليقاً