Blade Templates في Laravel: شرح Layout و Sections و Components للمبتدئين

بعد فهم Routes و Controllers، يصل المطور إلى مرحلة عرض البيانات في الواجهة.
وهنا تظهر مشكلة شائعة جدًا، خصوصًا عند المبتدئين:
تكرار نفس كود HTML في كل صفحة، وصعوبة تعديل الواجهة لاحقًا.

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

في هذا المقال، سنشرح Blade Templates بأسلوب مبسّط، مع التركيز على layout و sections و components، ولماذا تُعدّ هذه المفاهيم أساسية في أي مشروع Laravel احترافي.


المشكلة: تكرار الواجهة في صفحات متعددة

في المشاريع الصغيرة، قد يقوم المطور بكتابة HTML داخل كل صفحة بشكل مستقل.
لكن مع توسّع المشروع، تظهر عدة مشاكل، من بينها:

  • تكرار الـ header والـ footer في كل صفحة
  • صعوبة تعديل التصميم العام
  • زيادة احتمال الوقوع في أخطاء
  • تضخّم الملفات وصعوبة قراءتها

وبالتالي، أي تغيير بسيط في الواجهة يتطلّب تعديل عشرات الملفات، وهو أمر غير عملي.


الحل: استخدام Blade Templates في Laravel

Laravel يقدّم Blade كحل ذكي لتنظيم الواجهات.
فبدل تكرار HTML، يسمح Blade بـ:

  • إنشاء قالب عام (Layout)
  • تقسيم المحتوى إلى Sections
  • إعادة استخدام أجزاء الواجهة عبر Components

وبذلك، يصبح الكود أنظف، وأسهل في الصيانة، وأكثر مرونة.


ما هو Blade في Laravel؟

Blade هو محرك قوالب (Template Engine) مدمج داخل Laravel.
يسمح بكتابة HTML مع أوامر بسيطة تساعد على:

  • عرض البيانات
  • التحكم في الشروط والحلقات
  • تنظيم الواجهة بدون تعقيد

الأهم من ذلك، أن Blade لا يضيف عبئًا على الأداء، لأنه يُحوّل إلى PHP عادي أثناء التنفيذ.


إنشاء أول View في Laravel

جميع ملفات Blade توجد داخل:

resources/views

على سبيل المثال هذا ملف Blade:

home.blade.php

ثم بداخل الملف:

<h1>Welcome to MuhDroid</h1>

ثم من Controller:

return view('home');

Layout في Blade: الأساس الذي يُبنى عليه كل شيء

ما المشكلة بدون Layout؟

بدون Layout، ستضطر إلى تكرار نفس الهيكل في كل صفحة.
لذلك، جاء مفهوم Layout لحل هذه المشكلة جذريًا.


إنشاء Layout رئيسي

على سبيل المثال:

resources/views/layouts/app.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>@yield('title')</title>
</head>
<body>

    @yield('content')

</body>
</html>

هذا الملف يمثّل الهيكل العام للموقع.


Sections: حقن المحتوى داخل Layout

في الصفحة الفرعية:

@extends('layouts.app')

@section('title', 'Home Page')

@section('content')
    <h1>Home Content</h1>
@endsection

بهذا الأسلوب:

  • Layout ثابت
  • المحتوى يتغير حسب الصفحة
  • التنظيم يصبح واضحًا

لماذا @extends و @section مهمتان؟

لأنهما:

  • تمنعان تكرار الكود
  • تسهّلان تعديل التصميم العام
  • تجعل المشروع أكثر احترافية

وبالتالي، أي تعديل في Layout ينعكس تلقائيًا على جميع الصفحات.


Blade Components: إعادة استخدام أجزاء الواجهة

المشكلة

حتى مع Layout، قد تحتاج إلى:

  • أزرار متكررة
  • كروت
  • Alerts
  • Navbar

نسخ هذه الأجزاء في كل ملف يُعيدنا لمشكلة التكرار.


الحل: Components

حيث نقوم بإنشاء Component:

php artisan make:component Alert

الاستخدام:

<x-alert>
    This is an alert message
</x-alert>

بناء على ذلك، يمكنك إعادة استخدام نفس المكوّن في أي مكان.


متى تستخدم Components بدل Sections؟

  • Sections: لهيكل الصفحة
  • Components: لأجزاء صغيرة متكررة

الجمع بين الاثنين يعطيك واجهة نظيفة وقابلة للتوسّع.


عرض البيانات داخل Blade

Blade يسمح بعرض المتغيرات بسهولة:

{{ $title }}

كما يسمح باستخدام شروط:

@if($user)
    Welcome {{ $user->name }}
@endif

وحلقات:

@foreach($posts as $post)
    <p>{{ $post->title }}</p>
@endforeach

أخطاء شائعة في Blade Templates

تكديس المنطق داخل Blade

المشكلة: صعوبة الصيانة
الحل: اجعل Blade للعرض فقط، والمنطق داخل Controller


تكرار الكود بدل استخدام Components

المشكلة: فوضى في الواجهة
الحل: تحويل الأجزاء المتكررة إلى Components


متى يصبح Blade ضروريًا؟

Blade ضروري عندما:

  • يتجاوز المشروع صفحة واحدة
  • تحتاج إلى واجهة منظمة
  • تعمل ضمن فريق
  • تريد تقليل التكرار

وبالتالي، إهمال Blade يؤدي إلى مشروع صعب التطوير.


ماذا بعد Blade؟

بعد تنظيم الواجهة، ننتقل إلى:

  • تخزين البيانات
  • تنظيم الجداول
  • إدارة التغييرات

وهنا يأتي دور Migrations و Seeders.


مقالات ذات صلة

اترك رد