我在RouteServiceProvider
:
public function boot(Router $router)
{
parent::boot($router);
$router->model('article', 'App\Article');
}
我的路线组:
Route::group(['prefix' => 'articles'], function(){
//some routes ....
Route::group(['prefix' => '{article}'], function(){
Route::get('', [
'as' => 'article.show',
'uses' => 'ArticlesController@show'
]);
Route::get('comments', [
'as' => 'article.comments',
'uses' => 'ArticlesController@comments'
]);
});
});
/articles/666
完美无缺
/articles/666/comments
告诉我Http未找到异常。
答案 0 :(得分:1)
我能够重新创建此问题,但仅当我在数据库中没有id为666的文章时。
奇怪的是,当我没有路线绑定设置时,我没有遇到过这个问题。
尝试创建ID为666的文章或将ID更改为您拥有的文章,它应该有效。如果没有,您可能有另一条路线覆盖这一路线。运行命令php artisan route:list
以获取所有路由的列表。如果要缓存路由,请务必重新生成缓存。
答案 1 :(得分:0)
使用路由,您可以将模型直接注入到动作中:
// ArticlesController.php
...
public function show(Article $article) {
return response()->json($article);
}
但是请记住,您需要使用“绑定”中间件组来确保模型隐式地从路由中获取。 因此,例如在您的路线配置中:
Route::middleware('bindings')->group(function() {
Route::group(['prefix' => 'articles'], function(){
Route::group(['prefix' => '{article}'], function(){
Route::get('', [
'as' => 'article.show',
'uses' => 'ArticlesController@show'
]);
Route::get('comments', [
'as' => 'article.comments',
'uses' => 'ArticlesController@comments'
]);
});
});
});
这似乎没有很好的记录。