【问题标题】:Laravel 5.4 route::resource update route not workingLaravel 5.4 route::resource 更新路由不起作用
【发布时间】:2018-02-17 13:16:39
【问题描述】:

更新路线不起作用。

我已定义如下路线

Route::resource('contact', 'Dashboard\ContactController');

表单动作如下

{!! Form::open(['route' => 'contact.update','role' => 'form', 'class'=>'contact-form','id' => 'contact-form', 'data-submit' => 'noAjax']) !!}

我尝试过使用 PUT / PATCH 方法,但它仍然会存储路由。

我也尝试通过更新传递参数,但没有成功

{!! Form::open(['route' => ['contact.update', $list->id]]) !!}

【问题讨论】:

    标签: forms laravel-5 routes


    【解决方案1】:

    当您使用资源函数时,它会生成如下所示的路由:

    +----------+-------------------------+----------+-----------------+
    |  Method  |          Route          |  Action  |      Name       |
    +----------+-------------------------+----------+-----------------+
    | GET      | /contact                | index    | contact.index   |
    | GET      | /contact/create         | create   | contact.create  |
    | POST     | /contact                | store    | contact.store   |
    | GET      | /contact/{contact}      | show     | contact.show    |
    | GET      | /contact/{contact}/edit | edit     | contact.edit    |
    | PUT      | /contact/{contact}      | update   | contact.update  |
    | DELETE   | /contact/{contact}      | destroy  | contact.destroy |
    +----------+-------------------------+----------+-----------------+
    

    如您所见,contact.update 需要一个参数。因此,您必须将一个数组传递给route 参数以同时拥有路由的名称和参数:

    Form::open(['route' => ['contact.update', 'contactId']]);
    

    contactId 是您尝试更新的联系人的 ID。

    【讨论】:

    • 我也尝试传递评论。但是,它仍然指向存储方法 {!! Form::open(['route' => ['contact.update', $list->id]]) !!}
    【解决方案2】:

    你可以试试这个:

    Route::resource('contacts', 'Dashboard\ContactController');
    

    代替:

    Route::resource('contact', 'Dashboard\ContactController');
    

    【讨论】:

      【解决方案3】:

      从文档中,您需要添加隐藏的 _method 字段并为表单使用 POST 方法

      由于 HTML 表单无法发出 PUT、PATCH 或 DELETE 请求,因此您将 需要添加一个隐藏的 _method 字段来欺骗这些 HTTP 动词。这 @method Blade 指令可以为你创建这个字段:

      <form action="/foo/bar" method="POST">
          @method('PUT')
      </form>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-25
        • 2017-12-07
        • 2017-08-09
        • 2017-12-13
        • 2017-07-27
        • 2021-02-18
        • 2016-12-22
        • 2014-06-23
        相关资源
        最近更新 更多