我希望拥有这样的嵌套资源:
Route::group(['prefix' => 'manage', 'middleware' => ['role:boss']], function ()
{
Route::resource('/articles', 'ArticleController');
Route::group(['prefix' => '/articles', 'as' => 'articles.'], function () {
Route::resource('/types', 'ArticleTypeController');
});
});
但是“文章/类型”的嵌套路线不起作用,我在“文章”路线之外检查我的ArticleTypeController并工作。
我真的很困惑,每个人都可以帮助我?
这是我的控制器:
class ArticleTypeController extends Controller
{
public function index()
{
$types = ArticleType::all();
return view('manage.articles.types.index')->withtypes($types);
}
}
答案 0 :(得分:1)
Route::group(['prefix' => 'manage', 'middleware' => ['role:boss']], function ()
{
Route::get('articles/types', 'ArticleTypeController@articleTypeMethod');
Route::resource('articles', 'ArticleController');
Route::resource('articles.types', 'ArticleTypeController');
});
对于嵌套资源使用articles.types
。复数命名很好。
现在,manage/articles
和manage/articles/1/types
将起作用。
如果要放置自定义路由,请将控制器用作资源,将其置于资源路径上方。查看映射到articles/types [GET]
' s ArticleTypeController
的{{1}}路线。现在这样articleTypeMethod
应该可行
这里是5.1 documentation,它已从5.5的文档中删除。但看看泰勒对此所说的here
不建议在REST上使用http://localhost.com/manage/articles/types
的索引函数,使用嵌套资源articles/types
方法,如index
。
对于articles/{id}/types
,您需要创建一个新方法。
但是如果你仍然想这样做的话。就这样做吧
articles/types