Theme
Primary Color

وضع Active Class على الرابط الخاص بالصفحة الحالية

إذا كان لديك مجموعة من الروابط داخل ال Sidebar 

ويتم عرضها في جميع الصفحات 

يمكنك تمييز رابط الصفحة الحالية بإضافة ال Class المسمى active إليه

تخيل أن ملف ال Sidebar يحتوي على الروابط التالية

<li><a href="{{ route('Dashboard') }}">Dashboard</a></li>
<li><a href="{{ route('Profile') }}">Profile</a></li>
<li><a href="{{ route('Settings') }}">Settings</a></li>

كل رابط يستخدم الدالة route() لإنشاء الرابط عن طريق اسم ال Route 

ولذلك نفترض أن لديك Routes معرفة بالأسماء Dashboard و Profile و Settings بنفس حالة الأحرف

الآن نحتاج لفحص اسم ال Route الحالية حتى نضيف ال Active Class إلى الرابط المناسب

يمكننا استخدام ال named Method لمعرفة إذا كانت ال Route الحالية تحمل اسم معين بهذا الشكل

request()->route()->named('Dashboard')

إذا كانت ال Route الحالية اسمها Dashboard ستكون النتيجة true 

وإذا كانت تحمل اسم آخر ستكون النتيجة false

ويمكنك تجربة عرض النتيجة داخل ملف Blade بهذا الشكل

{{ request()->route()->named('Dashboard') }}

عند فتح صفحة ال Dashboard سيظهر الرقم 1 

لأن طباعة القيمة true تعرض هذا الرقم 

أما في الصفحات الأخرى فلن يظهر نص لأن طباعة القيمة false تعرض نص فارغ

الآن سنستخدم الشرط المختصر لإضافة كلمة active إذا تحقق الشرط أو نص فارغ إذا لم يتحقق

class="{{ request()->route()->named('Dashboard') ? 'active' : '' }}"

وهنا الكود كامل بعد تطبيق الشرط على جميع الروابط

<li>
  <a
    href="{{ route('Dashboard') }}"
    class="{{ request()->route()->named('Dashboard') ? 'active' : '' }}">
    Dashboard
  </a>
</li>

<li>
  <a
    href="{{ route('Profile') }}"
    class="{{ request()->route()->named('Profile') ? 'active' : '' }}">
    Profile
  </a>
</li>

<li>
  <a
    href="{{ route('Settings') }}"
    class="{{ request()->route()->named('Settings') ? 'active' : '' }}">
    Settings
  </a>
</li>

الآن عند فتح صفحة ال Dashboard سيحصل الرابط الخاص بها على class="active" بينما ستحصل الروابط الأخرى على class=""

وعند الانتقال إلى صفحة ال Profile سيتم تطبيق ال Class على رابط ال Profile حسب اسم ال Route الحالية

framework laravel برمجة تعلم لارافيل