【问题标题】:Laravel 5.1: How to set Route for update recordLaravel 5.1:如何设置更新记录的路线
【发布时间】:2023-03-15 06:10:01
【问题描述】:

我正在使用 laravel 5.1

我用的是laravel的路由。

我使用Form/Html 进行插入/更新,但卡在更新记录的路由中。

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

Route::get('/company/edit/{id}','CompanyMasterController@edit');

在我的 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::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.php 中的 MethodNotAllowedHttpException

我做错了什么?

【问题讨论】:

  • Route::put 是正确的,控制器方法是正确的,但在表单中您忘记选择正确的方法 - 它也是 'PUT' 而不是 'PATCH'。

标签: php laravel-5.1


【解决方案1】:

您收到此错误的主要原因是您将表单设置为使用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'));
}

显然,如果您不想这样做,则不必采用这种方法。

希望这会有所帮助!

【讨论】:

  • @Jazz 如果您想更进一步,我已经为答案添加了更新。很高兴我能帮上忙!
  • 感谢您的详细解释。我也试试这个步骤。
猜你喜欢
  • 1970-01-01
  • 2015-11-07
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 2015-12-05
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多