انتقل إلى محتوى الدرس
الدرس 17
دورة إطار العمل Laravel

التوجيهات الشرطية وحلقات التكرار في قوالب BladeBlade Conditional and Loop Directives

التحكم في عرض العناصر باستخدام التوجيهات الشرطية وحلقات التكرار @foreach و @forelse وكائن تتبع التكرار $loop.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يستبدل محرك Blade وسوم الشرط التقليدية في PHP بتوجيهات مقروءة هي @if و@elseif و@else و@endif للتحكم في إظهار عناصر الواجهة. وعندما ترغب في عرض عنصر فقط عند عدم تحقق الشرط، يوفر توجيه @unless صيغة أوضح بكثير من علامة النفي.

  • التفرع القياسي (@if / @elseif): يختبر أي تعبير منطقي في PHP لإظهار أو إخفاء كتل HTML.
  • الشرط العكسي (@unless): يعرض المحتوى بداخله فقط عندما تكون نتيجة الشرط غير متحققة.
  • إغلاق الكتل (@endif / @endunless): تُختم كل كتلة شرطية بتوجيه الإغلاق المطابق لها.
مخطط معماري يوضح التوجيهات الشرطية وحلقات التكرار في قوالب Blade في إطار العمل Laravel 12
PHP
@if ($inventoryCount > 10)
    <span class="badge-success">In Stock</span>
@elseif ($inventoryCount > 0)
    <span class="badge-warning">Low Stock</span>
@else
    <span class="badge-danger">Sold Out</span>
@endif

يوفر Blade توجيهات مختصرة لفحص حالة المتغيرات وبيئة تشغيل التطبيق وتعدد الحالات دون كتابة دوال PHP مطولة. استخدم @isset و@empty لفحص المتغيرات، و@production أو @env لتخصيص كود حسب بيئة العمل، و@switch لتعدد الخيارات.

  • فحص حالة المتغير (@isset / @empty): يتحقق بأمان من تعريف المتغير أو خلوه من البيانات قبل عرضه.
  • فحص بيئة التشغيل (@production / @env): يتيح تضمين كود مثل سكربتات الإحصائيات في بيئة الإنتاج فقط.
  • تعدد الحالات (@switch / @case): ينظم عرض الحالات المتعددة مثل حالة الطلب بوضوح.
PHP
@isset($discountCode)
    <p>Applied Promo: {{ $discountCode }}</p>
@endisset

@production
    <script src="https://cdn.example.com/a.js"></script>
@endproduction

لعرض القوائم والجداول وبطاقات المنتجات من المصفوفات، يقدم محرك Blade توجيهات الحلقات @foreach و@for و@while. وداخل أي حلقة تكرار، يمكنك استخدام التوجيهين المختصرين @continue و@break مع تمرير شرط منطقي لتخطي عنصر أو إنهاء الحلقة مباشرة.

  • تكرار المصفوفات (@foreach): يمر على جميع عناصر المصفوفة لتوليد عناصر HTML متكررة.
  • التخطي المشروط (@continue): يقبل شرطاً منطقياً بين قوسين لتجاوز العنصر الحالي في سطر واحد.
  • الإيقاف المبكر (@break): ينهي حلقة التكرار فوراً عند تحقق الشرط الممرر له.
PHP
<ul>
@foreach ($products as $product)
    @continue(! $product['is_visible'])
    <li>{{ $product['name'] }}</li>
    @break($product['is_featured_stop'])
@endforeach
</ul>

في تطبيقات الويب الفعلية، قد تكون أي قائمة فارغة مثل سلة تسوق خالية أو نتائج بحث غير مطابقة. بدلاً من إحاطة حلقة @foreach بشرط يفحص عدد العناصر، يدمج توجيه @forelse في Blade حلقة التكرار مع فرع @empty البديل في بنية واحدة أنيقة.

  • دمج التكرار مع الخلو (@forelse): يجمع حلقة العرض وحالة القائمة الفارغة في هيكل برمجي واحد.
  • العرض عند توفر العناصر (Loop Branch): يكرر عناصر الواجهة بشكل طبيعي طالما تحتوي المصفوفة على بيانات.
  • الفرع البديل التلقائي (@empty Branch): يعرض رسالة التنبيه البديلة تلقائياً عندما تكون القائمة فارغة.
PHP
<div class="orders-list">
@forelse ($orders as $order)
    <div class="order-row">#{{ $order['id'] }}</div>
@empty
    <p class="empty-state">No orders placed yet.</p>
@endforelse
</div>

داخل كل حلقة @foreach أو @forelse، يوفر محرك Blade تلقائياً المتغير الذكي $loop الذي يتتبع حالة الدورة الحالية بدقة. يمكنك قراءة $loop->iteration للترقيم التسلسلي الذي يبدأ من 1، أو فحص $loop->first و$loop->last لتمييز أول وآخر عنصر في القائمة.

  • الفهرس والترقيم (index vs iteration): يبدأ index من الصفر بينما يبدأ iteration من الرقم 1 للعرض للمستخدم.
  • أعلام الأطراف والزوجية (first / last / even): تفيد في تلوين الصفوف المتناوبة أو إزالة الفاصل بعد العنصر الأخير.
  • الوصول للحلقة الأب ($loop->parent): يتيح قراءة حالة الحلقة الخارجية عندما تكون داخل حلقة متداخلة.
PHP
<ul>
@foreach ($chapters as $chapter)
    <li>
        {{ $loop->iteration }}. {{ $chapter }}
        @if ($loop->last) (Final Chapter) @endif
    </li>
@endforeach
</ul>

يساعدك إتقان التوجيهات الشرطية وحلقة @forelse ومتغير $loop على كتابة قوالب نظيفة تماماً وخالية من متغيرات العد اليدوية. استعن بالدليل المرجعي التالي لاختيار التوجيه الأنسب لكل حالة عرض شرطي أو تكرار.

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحميمعيار Laravel 12 الحديث
العرض الشرطيخلط وسوم PHP التقليدية المتقطعة مع عناصر HTMLاستخدام توجيهات @if و@elseif و@unless النظيفة والمقروءة
معالجة القوائم الفارغةكتابة جملة شرط خارجية لفحص طول المصفوفة قبل كل حلقةدمج التكرار وحالة الخلو في بنية @forelse و@empty الموحدة
ترقيم الصفوف والأطرافتعريف متغيرات عد يدوية وزيادتها داخل ملف القالبالاعتماد على كائن $loop التلقائي وخصائص iteration وfirst وlast
تخطي وإيقاف الدوراتإحاطة جسم الحلقة بجمل شرط متداخلة لتجاوز بعض العناصراستخدام التوجيهات المختصرة @continue و@break بشرط مباشر
PHP
@switch($orderStatus)
    @case('paid')
        <span class="status-paid">Paid</span>
        @break
    @default
        <span class="status-pending">Pending</span>
@endswitch
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «التوجيهات الشرطية وحلقات التكرار في قوالب Blade» مفاهيم العرض الشرطي بتوجيهات if وunless، وفحص المتغيرات وحالة بيئة التشغيل، وتكرار عناصر المصفوفات بحلقة foreach وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «وراثة القوالب وتخطيطات الصفحات والقوالب الفرعية في Blade» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Blade Directives توجيهات Blade
التحكم في عرض العناصر باستخدام التوجيهات الشرطية وحلقات التكرار @foreach و @forelse وكائن تتبع التكرار $loop.
للمراجعة
02 Conditional Logic with If Directives العرض الشرطي بتوجيهات if وunless
المفهوم الهندسي والتطبيق العملي المباشر لقسم العرض الشرطي بتوجيهات if وunless في إطار العمل Laravel 12.
للمراجعة
03 Variable and Environment Check Helpers فحص المتغيرات وحالة بيئة التشغيل
المفهوم الهندسي والتطبيق العملي المباشر لقسم فحص المتغيرات وحالة بيئة التشغيل في إطار العمل Laravel 12.
للمراجعة
04 Iterating Arrays with Foreach Loops تكرار عناصر المصفوفات بحلقة foreach
المفهوم الهندسي والتطبيق العملي المباشر لقسم تكرار عناصر المصفوفات بحلقة foreach في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «العرض الشرطي بتوجيهات if وunless» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «فحص المتغيرات وحالة بيئة التشغيل» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من العرض الشرطي بتوجيهات if وunless في إطار العمل Laravel 12؟

يسهم العرض الشرطي بتوجيهات if وunless في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «فحص المتغيرات وحالة بيئة التشغيل» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة تكرار عناصر المصفوفات بحلقة foreach بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تكرار عناصر المصفوفات بحلقة foreach.

04

لماذا يُعد تطبيق عرض القوائم الفارغة بتوجيه forelse مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق تتبع حالة الدورة بمتغير loop في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع شروط وحلقات قوالب Blade؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.