🔺 شرح Laravel

قوالب Blade المتقدّمة

التخطيطات (Layouts)

لتجنّب تكرار الهيكل (رأس/تذييل) في كل صفحة. ملف التخطيط الأساسي:

{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
  <title>@yield('title')</title>
</head>
<body>
  <nav>القائمة</nav>

  @yield('content')

  <footer>التذييل</footer>
</body>
</html>

صفحة ترث منه:

@extends('layouts.app')

@section('title', 'الرئيسية')

@section('content')
  <h1>مرحبًا بالعالم</h1>
@endsection

التوجيهات الشرطية

@if($user->isAdmin())
  <p>مرحبًا أيها المدير</p>
@elseif($user->isEditor())
  <p>مرحبًا أيها المحرّر</p>
@else
  <p>مرحبًا أيها الزائر</p>
@endif

@auth
  <p>أنت مسجّل الدخول</p>
@endauth

@guest
  <a href="/login">سجّل الدخول</a>
@endguest

الحلقات

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

@forelse($posts as $post)
  <li>{{ $post->title }}</li>
@empty
  <p>لا توجد مقالات</p>
@endforelse

متغيّر الحلقة $loop

@foreach($items as $item)
  {{ $loop->iteration }} - {{ $item }}
  @if($loop->first) (الأول) @endif
  @if($loop->last) (الأخير) @endif
@endforeach

المكوّنات (Components)

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

php artisan make:component Alert
{{-- resources/views/components/alert.blade.php --}}
<div class="alert">{{ $message }}</div>

استخدامها:

<x-alert message="تمّ الحفظ بنجاح" />

عرض البيانات بأمان

{{ $name }}        {{-- آمن: يهرّب HTML (يمنع XSS) --}}
{!! $html !!}      {{-- خام: لا يهرّب — احذر! --}}

⚠️ استخدم {{ }} دائمًا لمدخلات المستخدم. {!! !!} للـ HTML الموثوق فقط.

أخطاء شائعة

  • استخدام {!! !!} لمدخلات المستخدم (ثغرة XSS).
  • نسيان @endsection/@endforeach فتظهر أخطاء قالب.

🎯 التالي: إعادة التوجيه والجلسات.