Laravel 5.4 route ::资源更新路由不起作用

时间:2017-09-08 15:01:41

标签: forms laravel-5 routes

更新路线无效。

我已经定义了以下路线

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]]) !!}

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

使用资源功能时,它会生成如下路径:

+----------+-------------------------+----------+-----------------+
|  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。

答案 2 :(得分:0)

您可以尝试以下方法:

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

代替:

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