Laravel 资源路由命名前缀

Posted

技术标签:

【中文标题】Laravel 资源路由命名前缀【英文标题】:Laravel Resource Routes Naming Prefix 【发布时间】:2019-06-30 20:39:10 【问题描述】:

我已经定义了两条资源路线。

Route::resource('p/contacts', 'BaseData\PrivateContactsController');
Route::resource('b/contacts', 'BaseData\ContactController');

我的问题是两个资源组都成为前缀相同的前缀(contacts.showcontacts.edit...)

在Laravel docs我找到了这种方式来命名路由

Route::resource('photos', 'PhotoController')->names([
'create' => 'photos.build'
]);

在我看来,这种方式非常复杂,因为我必须为每条路由设置前缀。有没有更好的方法为组的所有路由设置前缀?

【问题讨论】:

【参考方案1】:
Route::resource('p/contacts', 'BaseData\PrivateContactsController',["as"=>"private"]);
Route::resource('b/contacts', 'BaseData\ContactController',["as"=>"normal"]);

这样,url 将保持不变,但名称将有一个前缀,用于第一个资源控制器

private.contacts.index or private.contacts.edit

对于第二个控制器

    normal.contacts.create or normal.contacts.show

有关更多信息,请查看文档或此github issue

【讨论】:

【参考方案2】:

试试这个:

Route::group(['prefix'=>'your_prefix'], function()
    // put your code here
);

【讨论】:

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

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

在 Laravel 中添加前缀路由名称而不添加前缀 URI

laravel入门教程

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

Laravel 5.7 使用某些命名空间的资源控制器路由名称是啥?

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