'Laravel | Route not defined
I have a problem in my Route.
I see this error:
 Route [utilizadores.editar] not defined
The error occurs on the page when I try to update the data in my DB. My Route:
Route::put('Utilizadores/{item}', [FuncionarioController::class, 'editar'])->name('utilizadores.editar');
Route::get('Utilizadores/{item}/edit', [FuncionarioController::class, 'edit'])->name('utilizadores.edit');
My controller:
 public function editar(Request $request, funcionario $item){
     
    $item->nome = $request->nome;
    $item->email = $request->email;
    $item->telefone = $request->telefone;
    $item->foto = $request->foto;
    $item->data_nasc = $request->data_nasc;
    $item->nacionalidade = $request->nacionalidade;
    $item->n_cartao_cc = $request->n_cartao_cc;
    $item->nif = $request->nif;
    $item->morada = $request->morada;
    $item->n_porta = $request->n_porta;
    $item->localidade = $request->localidade;
    $item->concelho = $request->concelho;
    $item->distrito = $request->distrito;
    $item->cp = $request->cp;
    $item->data_entrada = $request->data_entrada;
    $item->funcao = $request->funcao;
    $item->estado = $request->estado;
   // $item->n_ferias_disponiveis = $request->n_ferias_disponiveis; 
    
   // $item->data_registo = $now;
    dd($item);
    $item->save();
    return redirect()->route('utilizadores.index');   
   
    }
My View:
<form class="needs-validation" method="POST" action="{{route('utilizadores.editar',$item->id)}}" enctype="multipart/form-data">
@csrf
@method('put')
Where am I wrong? I have other pages like this done and it works.
Thanks to anyone who can help me.
Edit: My php artisan route:list
  |        | DELETE   | Utilizadores/{item}             | utilizadores.delete         | App\Http\Controllers\FuncionarioController@delete             | web
                     |
  |        | PUT      | Utilizadores/{item}             | utilizadores.editar_perfil  | App\Http\Controllers\FuncionarioController@editar_perfil      | web
                     |
  |        | GET|HEAD | Utilizadores/{item}/delete      | utilizadores.modal          | App\Http\Controllers\FuncionarioController@modal              | web
                     |
  |        | GET|HEAD | Utilizadores/{item}/edit        | utilizadores.edit           | App\Http\Controllers\FuncionarioController@edit               | web
                     |
  |        | GET|HEAD | Utilizadores/{item}/edit_perfil | utilizadores.edit_perfil    | App\Http\Controllers\FuncionarioController@edit_perfil        | web
                     |
  |        | PUT      | Utilizadores/{item}/editpass    | utilizadores.passwordeditar | App\Http\Controllers\FuncionarioController@passwordeditar     | web
Solution 1:[1]
Just swap edit and editar route. Something like this
Route::get('Utilizadores/{item}/edit', [FuncionarioController::class, 'edit'])->name('utilizadores.edit');
Route::put('Utilizadores/{item}', [FuncionarioController::class, 'editar'])->name('utilizadores.editar');
Or better, use resource controller for simpler Route file
Route::resource('utilizadores', FuncionarioController::class);
Keep in mind that you will tweak some function name and route file
Solution 2:[2]
You cannot have two identical routes for the same method/path. It is apparent in route:list that you already have a route registered for put('Utilizadores/{item}') with a different name (utilizadores.editar_perfil), therefore,
Route::put('Utilizadores/{item}', 
    [FuncionarioController::class, 'editar'])
    ->name('utilizadores.editar');
is not being registered, so you get that error when you try to insert {{ route('utilizadores.editar',$item->id) }} in your view.
Solution 3:[3]
First look to your route list using below command
php artisan route:list
If the routes exists then hit this command :
php artisan optimize
php artisan optimize:clear
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | Localhousee | 
| Solution 2 | Karl Hill | 
| Solution 3 | Shahghasi Adil | 
