Laravel 5方法未找到异常

时间:2016-02-21 10:35:25

标签: laravel laravel-5

我使用Laravel 5并尝试更新表单:

 {!! Form::model($user, ['route' => ['edit', $user->id], 'method' => 'PUT']) !!}

 {!! Form::label('titel', 'First Name:'!!}
 {!! Form::text('titel', null,) !!}


<button type="submit">Update</button>
{!! Form::close() !!}

我的路线:

Route::post('edit/{id}', ['as' => 'edit', 'uses' => 'UserController@editUser']);

我的控制器:

public function editUser($id){};

点击更新按钮时,我在RouteCollection.php中得到MethodNotAllowedHttpException

我检查了浏览器源代码并看到我使用的Form :: model(..)生成以下输出:

<form method="POST" action="http://localhost/myProject/public/edit/1" accept-charset="UTF-8"><input name="_method" type="hidden" value="PUT"><input name="_token" type="hidden" value="4nZlyfzzAZmTcZfThQ8gcR6cgEgYgR0ip0JZTKck">

在表单中有属性method =&#34; POST&#34;隐藏的输入具有属性值=&#34; PUT&#34;。这对我来说似乎不正确。有任何想法吗?谢谢

2 个答案:

答案 0 :(得分:2)

您的路线与您的表格不同。

Laravel使用隐藏的输入来指定不同的http方法,如下所示。

所以在你的路线中你应该使用put方法而不是帖子。

Route::put();

答案 1 :(得分:2)

您应该使用&#39;更新&#39;实际保存数据的路由(验证并将其保存到数据库)。 &#39;编辑&#39; route是你用来生成编辑表单的。

您应该使用PUT方法运行保存数据的方法。

此外,这里有一个小小的提示。了解RESTful控制器的工作原理。他们真的很容易做你在这里做的事情(非常值得学习它们): https://laravel.com/docs/5.1/controllers