التخطيطات (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فتظهر أخطاء قالب.
🎯 التالي: إعادة التوجيه والجلسات.