【问题标题】:Laravel define a put/patch route as the same route nameLaravel 将 put/patch 路由定义为相同的路由名称
【发布时间】:2015-02-03 16:02:33
【问题描述】:

在 Laravel 中,使用路由资源快速生成大量路由非常方便:

Route::resource('things'ThingsController');

这将为 CRUD 操作生成所有必要的 RESTful 路由。其中之一是 PUT/PATCH 路由,可能定义如下:

PUT/PATCH things/{id} ThingsController@update things.update

我已经阅读过,最好明确定义每个路由而不是使用路由资源,但是我将如何定义上面的 PUT/PATCH 路由。我明白我能做到

Route::put('thing/{id}', ['as' => 'things.update']);

或

Route::patch('thing/{id}', ['as' => 'things.update']);

但第二个会覆盖或与第一个冲突,允许things.update 路由名称仅引用 PUT 或 PATCH 请求。如何显式创建由资源路由创建的组合 PUT/PATCH 路由?

【问题讨论】:

    标签: php laravel-4 routes


    【解决方案1】:

    经过繁琐的搜索,尝试以下;

    Route::match(array('PUT', 'PATCH'), "/things/{id}", array(
          'uses' => 'ThingsController@update',
          'as' => 'things.update'
    ));
    

    这允许您通过动词数组来限制请求。

    或者你可以这样限制资源;

    Route::resource('things', 'ThingsController',
            array(
               'only' => array('update'), 
               'names' => array('update' => 'things.update')
            ));
    

    两者应提供相同的结果,但请注意它们未经测试。

    【讨论】:

      【解决方案2】:

      这对我有用

      Route::match(['put', 'patch'],'thing/{id}', 'ThingsController@update');
      

      【讨论】:

      • 这与 4 年前接受的答案非常相似,但它没有回答如何为这两种方法保留单个路由名称的问题。
      猜你喜欢
      • 2018-03-27
      • 2016-02-20
      • 2021-05-29
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 2016-08-18
      相关资源
      最近更新 更多