使用Laravel 5中的前缀路由路由组中的资源

时间:2016-08-04 07:57:56

标签: php laravel laravel-5 routing

我正在尝试在路由组中创建路由资源:

Route::group(['middleware' => ['web', 'auth'], 'prefix' => 'template'], function() {
    Route::resource('template', 'TemplateController');

    Route::get('{template}/assign', 'blabla');
    Route::post('{template}/assign', 'blabla');

    Route::get('{template}/clone', 'blabla');
    Route::get('{template}/customizer', 'blabla');
});

但现在我得到这样的路线:template.template.indextemplate.template.create等等。

当我将名称 Route::resource('template', 'TemplateController'); 更改为 Route::resource('/', 'TemplateController');时,路线如下所示:template..index,{{ 1}}等等。

我确实有一个解决方案,但后来我需要创建另一个没有前缀的路由组。

(TL; DR;)我想知道如何使路由资源在具有前缀的路由组中工作并具有正确的路由名称(template.index,template.create等)

1 个答案:

答案 0 :(得分:0)

您可以使用as来定义路线名称。您也可以在小组中使用它:

Route::group(['as' => 'admin::'], function () {
    Route::get('dashboard', ['as' => 'dashboard', function () {
        // Route named "admin::dashboard"
    }]);
});

我假设您正在使用Laravel 5.1+,因为您正在使用组前缀。您可以在Laravel的路线部分阅读更多内容:

https://laravel.com/docs/5.1/routing#named-routes

https://laravel.com/docs/5.2/routing#named-routes

不确定在你的情况下你应该怎么做(我最好的猜测是将as留空),这样你就不得不摆弄。但原则应该是一样的。

(我最好的猜测):

Route::group(['middleware' => ['web', 'auth'], 'prefix' => 'template', 'as' => ''], function() {
    // stuff
});

如果在您的情况下命名该组不起作用,则可能必须为每条路线设置as