Php Laravel 5.1:如何设置更新记录的路径

Php Laravel 5.1:如何设置更新记录的路径,php,laravel-5.1,Php,Laravel 5.1,我正在与laravel 5.1合作 我使用的是拉威尔的路线 我曾用于插入/更新,但仍停留在更新记录的路由中 下面是routes.php中用于重定向到编辑页面的路由 Route::get('/company/edit/{id}','CompanyMasterController@edit'); Route::put('/company/update/{id}','CompanyMasterController@update'); 在my CompanyMasterController.php中

我正在与laravel 5.1合作

我使用的是拉威尔的路线

我曾用于插入/更新,但仍停留在更新记录的路由中

下面是routes.php中用于重定向到编辑页面的路由

Route::get('/company/edit/{id}','CompanyMasterController@edit');
Route::put('/company/update/{id}','CompanyMasterController@update');
在my CompanyMasterController.php中

public function edit($id)
   {
      $company = CompanyMasters::find($id);

      return view('companymaster.edit',  compact('company'));
   }
我在edit.blade.php中的操作

{!! Form::model($company,['method' => 'PATCH','action'=>['CompanyMasterController@update','id'=>$company->id]]) !!}
以及routes.php中此操作的路由

Route::get('/company/edit/{id}','CompanyMasterController@edit');
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');
   }
现在,当我单击“提交”按钮时,它会显示:

MethodNotAllowedHttpException在RouteCollection.php中


我做错了什么?

您出现此错误的主要原因是,您将表单设置为使用
补丁
方法提交,并且您已将路径设置为查找
放置
方法

您拥有的两个初始选项在路由文件中的方法与表单中的方法相同,或者您也可以将路由设置为:

Route::match(['put', 'patch'], '/company/update/{id}','CompanyMasterController@update');
上述两种方法均可用于该路线


或者,您可以使用
route:resource()

这将处理所有基本的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'));
}
显然,如果你不想,你不必使用这种方法


希望这有帮助

Route::put是正确的,controller方法是正确的,但是在形式上,您忘记选择正确的方法-它也是“put”而不是“PATCH”。@Jazz如果您想更进一步,我已经为答案添加了一个更新。很高兴我能帮忙!谢谢你的详细解释。我也尝试了这些步骤。