我有两个模型,我不想在其 URL 前面有前缀。例如用户和帖子
如果我有一个 URL https://example.com/title-of-the-post和https://example.com/username
我将在web.php
路由文件中做这样的事情:
// User
Route::get('{slug}', function ($slug) {
$user = User::whereSlug($slug)->get();
return view('users.show', $user);
});
// Post
Route::get('{slug}', function ($slug) {
$post = Post::whereSlug($slug)->get();
return view('posts.show', $user);
});
Run Code Online (Sandbox Code Playgroud)
现在我面临的问题是,输入了第一条路线并且永远不会到达第二条路线,即使没有具有匹配 slug 的模型。
如果$user
找不到,如何退出到下一条路线(邮政)?
注意:我尝试了许多不同的退出策略,但似乎都没有奏效。
return;
return false;
return null;
// and return nothing
Run Code Online (Sandbox Code Playgroud)
提前致谢!
更新:
另一个问题是,如果我有其他resource
路线,它们也会被第一条路线挡住。
例如,如果我有Route::resource('cars', 'CarController')
它生成一个/cars
匹配 {slug}的路径,并且也被第一个用户路由阻止。