我的EmployeeCOntroller的edit.blade视图出现问题。
Edit.blade.php
<form method="PUT" action="{{ route('employees.update', $employee_detail->id) }}" aria-label="{{ __('Edit') }}" enctype="multipart/form-data">
web.php
Route::patch('/employee/{id}', 'EmployeeController@update')->name('employees.update');
Route::get('/employee/{id}', 'EmployeeController@destroy')->name('employees.delete');
EmployeeController
public function update(Request $request, $id)
我不知道为什么,但是对我的控制器上的destroy()函数的请求!
我已经完成了php artisan route:list
+--------+----------+-------------------------------------+--------------------------------+------------------------------------------------------------------------+----------------------------------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------------------------+--------------------------------+------------------------------------------------------------------------+----------------------------------------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | _debugbar/assets/javascript | debugbar.assets.js | Barryvdh\Debugbar\Controllers\AssetController@js | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | _debugbar/assets/stylesheets | debugbar.assets.css | Barryvdh\Debugbar\Controllers\AssetController@css | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | DELETE | _debugbar/cache/{key}/{tags?} | debugbar.cache.delete | Barryvdh\Debugbar\Controllers\CacheController@delete | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | _debugbar/clockwork/{id} | debugbar.clockwork | Barryvdh\Debugbar\Controllers\OpenHandlerController@clockwork | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | _debugbar/open | debugbar.openhandler | Barryvdh\Debugbar\Controllers\OpenHandlerController@handle | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | admin | admin | App\Http\Controllers\Back\AdminController@index | web |
| | GET|HEAD | admin/employee | employees.index | App\Http\Controllers\Back\EmployeeController@index | web,auth |
| | GET|HEAD | admin/employee/create | employees.create | App\Http\Controllers\Back\EmployeeController@create | web,auth |
| | POST | admin/employee/create | employees.store | App\Http\Controllers\Back\EmployeeController@store | web,auth |
| | GET|HEAD | admin/employee/show/{id} | employees.show | App\Http\Controllers\Back\EmployeeController@show | web,auth |
| | GET|HEAD | admin/employee/{id} | employees.delete | App\Http\Controllers\Back\EmployeeController@destroy | web,auth |
| | PUT | admin/employee/{id} | employees.update | App\Http\Controllers\Back\EmployeeController@update | web,auth |
| | POST | admin/employee/{id}/dossiers/create | create.document.employee.store | App\Http\Controllers\Back\DossierController@dossiers_employees_store | web |
| | GET|HEAD | admin/employee/{id}/dossiers/create | create.document.employee.show | App\Http\Controllers\Back\DossierController@dossiers_employees_create | web |
| | GET|HEAD | admin/employee/{id}/edit | employees.edit | App\Http\Controllers\Back\EmployeeController@edit | web,auth |
| | GET|HEAD | admin/entreprise | entreprises.index | App\Http\Controllers\Back\EntrepriseController@index | web,auth |
| | POST | admin/entreprise/create | entreprises.store | App\Http\Controllers\Back\EntrepriseController@store | web,auth |
| | GET|HEAD | admin/entreprise/create | entreprises.create | App\Http\Controllers\Back\EntrepriseController@create | web,auth |
| | GET|HEAD | admin/entreprise/show/{id} | entreprises.show | App\Http\Controllers\Back\EntrepriseController@show | web,auth |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | home | home | App\Http\Controllers\HomeController@index | web,auth |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | GET|HEAD | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
+--------+----------+-------------------------------------+--------------------------------+------------------------------------------------------------------------+----------------------------------------------+
和php artisan route:clear
我也尝试过:
<form method="POST" action="{{ route('employees.update', $employee_detail->id) }}" aria-label="{{ __('Edit') }}" enctype="multipart/form-data">
@method('PUT')
@csrf
,并保留web.php中设计的路由。
它仍然没有任何作用。 继续调度到destroy()而不是update()。
有人有想法吗?
谢谢!
答案 0 :(得分:0)
这是因为您要尝试执行的操作以及您期望的操作。
在您的路由文件中尝试一下:
Route::put('/employee/{id}', 'EmployeeController@update')->name('employees.update');
如果您想了解“ PUT”和“ PATCH” HTTP动词之间的区别,我添加了一个链接:https://williamdurand.fr/2014/02/14/please-do-not-patch-like-an-idiot/
HTML表单不支持PUT,PATCH或DELETE操作。因此,在定义从HTML表单调用的PUT,PATCH或DELETE路由时,您将需要向表单添加一个隐藏的_method字段。通过_method字段发送的值将用作HTTP请求方法:
<form action="{{ route('employees.update', $employee_detail->id) }}" method="POST">
<input type="hidden" name="_method" value="PUT">
</form>
您可以使用@method Blade指令生成_method输入:
<form action="{{ route('employees.update', $employee_detail->id) }}" method="POST">
@method('PUT')
</form>
答案 1 :(得分:0)
| PUT | admin/employee/{id}/update | employees.update | App\Http\Controllers\Back\EmployeeController@update | web,auth
| GET|HEAD | admin/employee/{id}/delete | employees.delete | App\Http\Controllers\Back\EmployeeController@destroy | web,auth |
我已经在我的路线上添加了更新和删除,并且现在可以正常工作了。...
Route::put('/employee/{id}/update', 'EmployeeController@update')->name('employees.update');
Route::get('/employee/{id}/delete', 'EmployeeController@destroy')->name('employees.delete');
对我来说很奇怪...