0
votes

i have an issue on my view edit.blade of my EmployeeCOntroller.

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)

i dont know why but the request to my destroy() function on my controller !!

i have done 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                                    |
+--------+----------+-------------------------------------+--------------------------------+------------------------------------------------------------------------+----------------------------------------------+

and php artisan route:clear

i have also tried that :

  <form method="POST" action="{{ route('employees.update', $employee_detail->id) }}" aria-label="{{ __('Edit') }}" enctype="multipart/form-data">
        @method('PUT')
        @csrf

and lets the route designed in web.php unchanged.

it still nothing working. continu to dispatch to destroy() instead of update().

Someone have an idee ?

Thanks all !

2

2 Answers

0
votes

It's because the action you're trying to do and the one you are expecting.

Try this in your route file:

Route::put('/employee/{id}', 'EmployeeController@update')->name('employees.update');

I add a link in case you want to know the difference between "PUT" and "PATCH" HTTP verbs: https://williamdurand.fr/2014/02/14/please-do-not-patch-like-an-idiot/

HTML forms do not support PUT, PATCH or DELETE actions. So, when defining PUT, PATCH or DELETE routes that are called from an HTML form, you will need to add a hidden _method field to the form. The value sent with the _method field will be used as the HTTP request method:

<form action="{{ route('employees.update', $employee_detail->id) }}" method="POST">
    <input type="hidden" name="_method" value="PUT">
</form>

You may use the @method Blade directive to generate the _method input:

<form action="{{ route('employees.update', $employee_detail->id) }}" method="POST">
    @method('PUT')
</form>
0
votes
 | 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                                     |

i have added update and delete on my route and its worked now....

Route::put('/employee/{id}/update', 'EmployeeController@update')->name('employees.update');
Route::get('/employee/{id}/delete', 'EmployeeController@destroy')->name('employees.delete');

very strange for me...