'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

Docs

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