【问题标题】:Laravel custom action names and route names using a resource controller?使用资源控制器的 Laravel 自定义操作名称和路由名称?
【发布时间】:2021-01-09 11:34:56
【问题描述】:

默认情况下,资源控制器会为您提供这些操作和路由名称:

ACTION  ROUTE NAME
index   resource.index
create  resource.create
store   resource.store
show    resource.show
edit    resource.edit
update  resource.update
destroy resource.destroy

并希望将它们(动作和路由名称)重命名为:

ACTION  ROUTE NAME
**browse    resource.browse**
create  resource.create
store   resource.store
show    resource.show
edit    resource.edit
update  resource.update
**delete    resource.delete**

并且仍然使用资源控制器,如下所示:

Route::resource('resource', 'ResourceController');

而不是像这样的 GET 路由列表:

Route::get('resource', 'ResourceController@index');
Route::get('resource/create', 'ResourceController@index');
...

【问题讨论】:

  • 创建您自己的扩展 ResourceRegistrar,您可以根据需要定义它们

标签: php laravel routes


【解决方案1】:

这是 Laravel 文档建议的一个很好的解决方案:

Route::resource('resource', 'ResourceController', ['names' => [
    'index' => 'resource.browse',
    'delete' => 'resource.delete',
]]);

其余的将使用默认名称。

Laravel 文档中的相关部分:https://laravel.com/docs/5.2/controllers#restful-naming-resource-routes

【讨论】:

    【解决方案2】:

    您也可以为资源控制器编写自定义路由。

    // for **browse    resource.browse**
    Route::post('resource/browse', 'ResourceController@browse')->name('resource.browse');
    
    //for **delete    resource.delete**
    Route::delete('resource/delete', 'ResourceController@delete')->name('resource.delete');
    
    

    【讨论】:

    • 我想我需要一些可以改变默认配置的东西。我想要这样的路线: Route::resource('resource', 'ResourceController');并且在控制器中有浏览和删除的方法。我认为 Ahmad 的解决方案正是这样做的。
    • 太好了:)
    猜你喜欢
    • 2015-07-20
    • 2017-02-12
    • 1970-01-01
    • 2014-01-26
    • 2012-09-15
    • 1970-01-01
    • 2015-02-10
    • 2019-07-16
    • 2019-07-23
    相关资源
    最近更新 更多