【发布时间】:2019-06-06 16:43:29
【问题描述】:
我有两个模型,我不想在其 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);
});
现在我面临的问题是,即使没有匹配 slug 的模型,输入了第一条路线并且永远不会到达第二条路线。
如果找不到$user,我该如何退出到下一条路线(帖子)?
注意:我尝试了许多不同的退出策略,但似乎都不起作用。
return;
return false;
return null;
// and return nothing
提前致谢!
更新:
另一个问题是,如果我有其他 resource 路由,它们也会被第一条路由阻塞。
例如如果我有 Route::resource('cars', 'CarController'),它会生成一个与 {slug} 匹配的 /cars 路径,并且也被第一个用户路由阻止。
【问题讨论】:
-
这可以用这个答案中所述的中间件来完成吗 - stackoverflow.com/a/42216547/2341298?