كشف مسار ذكي في لارافيل.
كشف مسار ذكي في لارافيل
توفر طريقة التسمية في لارافيل وسيلة نظيفة لتحديد ما إذا كان الطلب الحالي يتوافق مع اسم مسار محدد. تسمح لك هذه الميزة القوية بتنفيذ منطق شرطية بناءً على المسار الحالي، وهو أمر مثالي للتحليلات أو تمييز التنقل أو فحص الأذونات.
يصبح هذا النهج ذا قيمة خاصة عند بناء مكونات تحتاج إلى التصرف بشكل مختلف بناءً على المسار الحالي، دون كتابة عمليات فحص شرطية متكررة في جميع أنحاء تطبيقك.
if ($request->route()->named('dashboard')) { // We're on the dashboard}
فيما يلي مثال عملي لتنفيذ حالات التنقل الديناميكية:
<?php namespace App\View\Components; use Illuminate\View\Component;use Illuminate\Http\Request; class NavigationMenu extends Component{ public function __construct(private Request $request) { } public function isActive(string $routeName): bool { return $this->request->route()->named($routeName); } public function isActiveSection(string $section): bool { return $this->request->route()->named("$section.*"); } public function render() { return view('components.navigation-menu', [ 'sections' => [ 'dashboard' => [ 'label' => 'Dashboard', 'route' => 'dashboard', 'active' => $this->isActive('dashboard') ], 'posts' => [ 'label' => 'Blog Posts', 'route' => 'posts.index', 'active' => $this->isActiveSection('posts') ], 'settings' => [ 'label' => 'Settings', 'route' => 'settings.index', 'active' => $this->isActiveSection('settings') ] ] ]); }}
عند استخدامه في تطبيقك، يكشف مكون التنقل تلقائيًا عن المسار الحالي ويقوم بالتحديث وفقًا لذلك:
<!-- navigation-menu.blade.php --><nav> @foreach($sections as $key => $section) <a href="{{ route($section['route']) }}" @class(['nav-link', 'active' => $section['active']])> {{ $section['label'] }} </a> @endforeach</nav>
تبسط طريقة `named` المنطق القائم على المسار، مما يجعل الكود أكثر قابلية للصيانة ويقلل من تعقيد الميزات المعتمدة على المسار.