我正在使用 laravel 5.1
我正在使用拉拉维尔的路线。
我使用 Form/HTML 进行插入/更新,但卡在更新记录的路由中。
这是重定向到路由中编辑页面的路由.php
Route::get('/company/edit/{id}','CompanyMasterController@edit');
在我的公司主控制器中.php
public function edit($id)
{
$company = CompanyMasters::find($id);
return view('companymaster.edit', compact('company'));
}
我在编辑刀片中的操作.php
{!! Form::model($company,['method' => 'PATCH','action'=>['CompanyMasterController@update','id'=>$company->id]]) !!}
并在路由中执行此操作的路由.php
Route::put('/company/update/{id}','CompanyMasterController@update');
我的控制器操作以进行更新。
public function update($id)
{
$bookUpdate=Request::all();
$book= CompanyMasters::find($id);
$book->update($bookUpdate);
return redirect('/company/index');
}
现在,当我单击提交按钮时,它会给我:
RouteCollection 中的 MethodNotAllowedHttpException .php
我做错了什么?
收到此错误的主要原因是,您将表单设置为使用 PATCH
方法提交,并且已将路由设置为查找PUT
方法。
您拥有的两个初始选项要么在路由文件中具有与表单相同的方法,要么还可以将路由设置为:
Route::match(['put', 'patch'], '/company/update/{id}','CompanyMasterController@update');
以上将允许将这两种方法用于该路由。
或者,您可以使用route:resource()
https://laravel.com/docs/5.2/controllers#restful-resource-controllers。
这将照顾所有基本的Restful路线。
然后,要更进一步,您可以将以下内容添加到路由文件中:
Route::model('company', 'App'CompanyMasters'); //make sure the namespace is correct if you're not using the standard `App'ModelName`
然后,您的资源路由将如下所示:
Route::resource('company', 'CompanyMasterController');
然后CompanyMasterController
您的方法可以类型提示,例如
public function edit($id) {...}
会变成:
public function edit(CompanyMaster $company)
{
return view('companymaster.edit', compact('company'));
}
显然,如果您不想,则不必使用此方法。
希望这有帮助!