route()在两个路由中返回的方式不同



我创建了两条资源路由并将它们绑定到一个组中。

Route::group(['middleware' => 'auth'], function () {
    Route::resource('user/posts', PostController::class)->name('show', 'user.posts');
    Route::resource('admin/posts', PostController::class)->middleware('is_admin')->name('show', 'admin.posts');
});

代码下面的href标签只在admin中工作,它变成'/admin/posts'。但是当一个非admin用户登录时,它指向'/posts'而不是'/user/posts'。

<x-jet-nav-link href={{route('posts')}}" :active="request()->routeIs('posts')">
 {{ __('Posts') }}
</x-jet-nav-link>

所以我必须像下面这样修改代码:

<x-jet-nav-link href="{{ route(auth()->user()->isAdmin?'admin.posts':'user.posts', '') }}" :active="request()->routeIs('posts')">
 {{ __('Posts') }}
</x-jet-nav-link>

我在第一个方法中遗漏了什么?
另外,:active=不工作。我怎样才能解决这个问题呢?

您可以运行php artisan route:list并发布输出吗?

对于链接的第二部分,我认为您需要指定路由,如posts.indexposts.show,并为isActive尝试::active="request()->routeIs('posts.*')"

最新更新