Laravel更新请求方法NotAllowedException
Laravel Update Request MethodNotAllowedException
我有一个名为 CustomerController 的 class 具有更新功能:
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,我找不到任何解决方案。
截图:
非常感谢!
路线确实存在:
更新时,因此使用 PUT 方法,您的表单中必须有一个隐藏的输入,如下所示:
<input type="hidden" name="_method" value="PUT">
表格仍然是 post
<form action="/" method="POST">
或者如@kerbholz 所述(非常感谢),您可以使用助手
{{ method_field('PUT') }}
用 put 和 patch 改变你的路由方法
您收到此错误的主要原因是您的表单提交方法与路由方法不同。
Route::match(['put', 'patch'], '/Customer/{id}','CustomerController@update');
我有一个名为 CustomerController 的 class 具有更新功能:
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,我找不到任何解决方案。
截图:
路线确实存在:
更新时,因此使用 PUT 方法,您的表单中必须有一个隐藏的输入,如下所示:
<input type="hidden" name="_method" value="PUT">
表格仍然是 post
<form action="/" method="POST">
或者如@kerbholz 所述(非常感谢),您可以使用助手
{{ method_field('PUT') }}
用 put 和 patch 改变你的路由方法
您收到此错误的主要原因是您的表单提交方法与路由方法不同。
Route::match(['put', 'patch'], '/Customer/{id}','CustomerController@update');