【问题标题】:Laravel 5 Method not found exceptionLaravel 5方法未找到异常
【发布时间】:2016-06-02 18:44:06
【问题描述】:

我使用 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="POST",隐藏输入有属性value="PUT"。这对我来说似乎不正确。有任何想法吗?谢谢

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    您应该使用“更新”路由来实际保存数据(验证并将其保存到数据库中)。 'edit' 路由是你用来生成编辑表单的。

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

    另外,这里给你一个小提示。了解 RESTful 控制器的工作原理。它们是您在这里做的事情的真正简单方法(绝对值得学习它们): https://laravel.com/docs/5.1/controllers

    【讨论】:

    • 很高兴能帮上忙。 )
    【解决方案2】:

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

    Laravel 使用隐藏的输入来指定不同的 http 方法。

    所以在你的路由中你应该使用 put 方法而不是 post。

    Route::put();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多