【发布时间】:2020-02-08 15:58:23
【问题描述】:
我的可选路线如下所示:
Route::group(['prefix' => 'blog'], function ({
Route::get('/', [
'uses' => 'BlogController@showBlog',
'as' => 'show.blog'
]);
Route::get('{author}/{y?}/{m?}/{d?}/{title?}', [
'uses' => 'BlogController@showDetailBlog',
'as' => 'detail.blog'
]);
});
它的控制器看起来像这样:
public function showDetailBlog($author, $year = null, $month = null, $date = null, $title = null)
{
$user = User::where('username', $author)->first();
if(!$year && !$month && !$date && !$title) {
return view('pages.blog.author', compact('user'));
} else {
$blog = Blog::where('user_id', $user->id)->whereYear('created_at', $year)
->whereMonth('created_at', $month)->whereDay('created_at', $date)
->where('title_uri', $title)->first();
$relates = Blog::where('category_id', $blog->category_id)->orderByDesc('id')->get();
$tgl = Carbon::parse($blog->created_at);
$uri = route('detail.blog', ['author' => $user->username, 'y' => $tgl->format('Y'),
'm' => $tgl->format('m'), 'd' => $tgl->format('d'),
'title' => $blog->title_uri]);
return view('pages.blog.detail', compact('user', 'blog', 'relates', 'uri'));
}
}
当我用完整的参数请求它时:
/blog/author123/2019/10/10/lorem-ipsum-dolor-sit-amet
它将正确返回到详细博客视图。但是当我请求它时只使用作者参数,例如:
/blog/author123
不会返回作者的博客视图,总是返回一个空数组。
有人知道我错过了什么吗?
【问题讨论】:
-
愚蠢的问题:为什么你在 URL 中有
/blog/,但在路由中没有?你在一个路由组吗?路线和功能是正确的。但是,根据您提供的内容(除非您有路由组),这两个 URL 都应该失败并命中您的 404。 -
ya 在路由组中,前缀为“blog”
-
@Raul 好吧.. 如果你不介意,再次检查我的路线,我只是更新它:v
-
你能开始调试以确保它正在输入那部分代码吗?您可能有另一个路由正在覆盖此路由并在另一个控制器中执行。我以前见过很多次。例如:你可能有一个路由 /blog/authhor/{something},Laravel 会先匹配它。
-
你的群回调不正确,试试
Route::group(['prefix' => 'blog'], function () {
标签: php laravel routes optional-parameters