Laravel 5中带有前缀的路由组中的路由资源

Posted

技术标签:

【中文标题】Laravel 5中带有前缀的路由组中的路由资源【英文标题】:Route resource in route group with prefix in Laravel 5 【发布时间】:2016-12-10 05:45:21 【问题描述】:

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

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..indextemplate..create 等 p>

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

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

【问题讨论】:

只是检查 - 我的回答有帮助还是您自己解决了问题? 我使用了我的旧解决方案。不过感谢您的帮助! 【参考方案1】:

您可以使用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

【讨论】:

以上是关于Laravel 5中带有前缀的路由组中的路由资源的主要内容,如果未能解决你的问题,请参考以下文章

带有前缀和资源的laravel嵌套路由不起作用

Laravel 资源路由命名前缀

Laravel5.1 路由 -路由分组

将语言环境添加到 laravel 资源路由

Laravel 控制器路由在 URI 中带有 _

laravel 路由参数的默认值怎么设置