【发布时间】:2016-02-14 05:04:33
【问题描述】:
我正在开发一个系统,它运行良好。现在,我需要创建一个只更新选定列的自定义更新方法。主要更新工作正常,但我们只需要更新几列,而不是每个字段。所以我在 EmployeeController 的基本索引之上添加了两个新函数,创建、更新、存储、销毁和删除。
public function editphoto($EmployeeID)
{
$employee=Employee::find($EmployeeID);
return view('employees.editphoto',compact('employee'));
}
public function updatephoto($EmployeeID)
{
return view('hello');
}
在我的 routes.php 文件中,我添加了两条新路线
Route::resource('employees', 'EmployeesController');
Route::get('employees/{employee}/editphoto', 'EmployeesController@editphoto')->name('employees.editphoto');
Route::get('employees/{employee}', 'EmployeesController@updatephoto')->name('employees.updatephoto');
在我的新 editphoto.blade.php 视图中
{!! Form::model($employee,['method' => 'PUT','route'=>['employees.updatephoto',$employee->EmployeeID]]) !!}
{!! Form::label('GrandFathersName', 'Grand Fathers Name') !!}
{!! Form::text('GrandFathersName',null,['class'=>'form-control']) !!}
<a class="btn btn-success pull-left form-control" href="{{ URL::route('employees.index') }}">Cancel</a>
{!! Form::close() !!}
当我单击此表单上的更新按钮时,它会尝试验证数据,这实际上是在控制器的更新功能上。但我应该得到一个带有文本“你好”的视图
我认为是 PATCH 方法导致它转到更新方法,所以我尝试更改它甚至删除它,但它要么引发错误,要么引发相同的事情。
这是路线列表。
我已经尝试过Add new methods to a resource controller in Laravel 上的解决方案,即使它适用于 laravel 4。我没有尝试第二个答案,尽管它没有被标记为解决方案。此外,您可以看到我在控制器上添加了正确的路由。
那么,如何使用 PATCH 操作请求创建新的更新方法,或者如何使用 PUT 或任何其他操作请求的新方法更新数据?
【问题讨论】:
-
您的路由
employees.updatephoto被定义为接受GET请求,但您对该路由的操作的表单方法是PUT。更改路由定义以匹配。 -
@JosephSilber 实际上,我看到了该答案,但所选答案不适用,因为我已经在 routes.php 文件中注册了我的新路线
-
@Bogdan,这实际上是我的观点,employees.updatephoto 路由如何接受 PATCH 请求。我已经尝试在表单操作上使用 PUT,但它会尝试验证数据,这意味着它将进入存储或更新功能。