我正在使用一個系統,它的工作完美。現在,我需要創建一個只更新選定列的自定義更新方法。主要更新工作正常,但我們只需要更新幾列,而不是每個字段。所以我在我的EmployeeController基礎索引上添加了兩個新的函數,創建,更新,存儲,銷燬和刪除。更新Laravel 5.1中的選定列或創建自定義補丁/ PUT更新功能
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', '[email protected]')->name('employees.editphoto');
Route::get('employees/{employee}', '[email protected]')->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'。更改路線定義以匹配。 – Bogdan
@JosephSilber其實,我看到了答案,但選擇的答案不適用,因爲我已經在routes.php文件中註冊了我的新路線 – EtDes
@Bogdan,這實際上是我的觀點,employees.updatephoto路線如何接受PATCH要求。我已經在表單動作上嘗試了PUT,但它試圖驗證數據,這意味着它將進入商店或更新功能。 – EtDes