Laravel更新请求MethodNotAllowedException

时间:2018-08-08 09:51:46

标签: php laravel

我有一个名为CustomerController的类,具有Update函数:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
//use app\model\Customer;
use Illuminate\Support\Facades\View;
use App\model\Customer;

class CustomerController extends Controller
{
   public function getAllCustomer()
   {
       return Customer::get();
   }

public function addNewCustomer(Request $request)
{
    $validatedData = $request->validate([
        'Title' => 'required',
        'Name' => 'required|max:255',
        'Surname' => 'required|max:255',
        'Email' => 'required',
        'Phone' => 'required',
        'Password' => 'required',
        'dateofBirth' => 'required'
    ]);

    return \app\model\Customer::create($request->all());
}


public function update (Request $request , Customer $id)
{
    $id->update($request->all());
}

这是路线:

Route::put('Customer/{id}' , 'CustomerController@update');

但是目前我正在获取MethodNotAllowedException,我找不到任何解决方案。 屏幕截图: enter image description here 非常感谢你!

路由确实存在: enter image description here

2 个答案:

答案 0 :(得分:2)

在进行更新(因此使用PUT方法)时,您的表单中必须具有隐藏的输入,如下所示:

<input type="hidden" name="_method" value="PUT">

该表格仍将是帖子

<form action="/" method="POST">

或者如@kerbholz所述(非常感谢),您可以使用帮助器

{{ method_field('PUT') }}

答案 1 :(得分:0)

同时使用put和patch更改路由方法

出现此错误的主要原因是表单提交方法与route方法不同。

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