laravel中的嵌套资源不起作用

时间:2018-06-18 15:45:04

标签: laravel controller routes

我希望拥有这样的嵌套资源:

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);
    }
}

1 个答案:

答案 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/articlesmanage/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