如何解决Laravel Jetstream - 导航 - 将路线名称数据传递给:活动导航
在我的 navigation-dropdown.blade.php
(来自 Laravel Jetstream)中,我有:
<x-jet-responsive-nav-link href="{{ route('dashboard') }}" :active="request()->routeIs('dashboard')">
{{ __('Dashboard') }}
</x-jet-responsive-nav-link>
<x-jet-responsive-nav-link href="/purchases" :active="request()->routeIs('purchases.index')">
{{ __('Purchases') }}
</x-jet-responsive-nav-link>
<x-jet-responsive-nav-link href="/debug" :active="request()->routeIs('debug')">
{{ __('Debug') }}
</x-jet-responsive-nav-link>
在我的 routes/web.php
中,我有:
Route::middleware(['auth:sanctum','verified'])->resource('purchases','App\Http\Controllers\PurchaseController')->name('*','purchases');
Route::middleware(['auth:sanctum','verified'])->get('/debug',[DebugController::class,'index'])->name('debug');
我访问 /purchases
并且 :isActive
没有设置,但是当我访问 /debug
时,它设置了。换句话说,当您按预期位于 ->name('debug')
视图时,将 /debug
附加到路由会向“调试”添加下划线。
但是,将 ->name('purchases')
附加到资源路由会导致参数不足的异常。调用 ->name('*','purchases')
不会抛出任何异常但什么也不做(此导航项上没有下划线)。
在 /debug
视图中,您会看到:
在 /purchases
视图中,您看不到下划线:
我该如何解决这个问题?我也试过:
<x-jet-responsive-nav-link href="/purchases" :active="request()->routeIs('purchases')">
{{ __('Purchases') }}
</x-jet-responsive-nav-link>
解决方法
我会在 href="" 中使用路由名称:
<x-jet-responsive-nav-link href="{{route('purchases.index')}}" :active="request()->routeIs('purchases.index')">
{{ __('Purchases') }}
</x-jet-responsive-nav-link>
我也会用通配符 (*) 检查是否处于活动状态,以确保它在您在另一个站点(如“purchases.edit”)上时处于活动状态:
<x-jet-responsive-nav-link href="{{route('purchases.index')}}" :active="request()->routeIs('purchases.*')">
{{ __('Purchases') }}
</x-jet-responsive-nav-link>
总的来说,使用中间件组保护路由是一个好主意,这样您就不必将中间件添加到每个路由中:
Route::group(['middleware' => ['auth:sanctum','verified']],function(){
Route::resource('purchases',PurchaseController::class); //resources don't need manual name
Route::get('/debug',[DebugController::class,'index'])->name('debug');
});
*别忘了
use 'App\Http\Controllers\PurchaseController';
在你的路由文件中或在路由中使用全限定名:
Route::resource('purchases',App\Http\Controllers\PurchaseController::class);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。