Ayuda con el error “Action {$action} not defined.” en Laravel

publicado por: Anonymous

En mi controlador llamado DocenteController tengo la función:

public function editarUsuario($id)
{.....}

En el archivo de rutas:

Route::resource('misvistas/docente', 'DocenteController');

y lo mando a traer:

href="{{ URL::action('[email protected]', $usuario->idusuario) }}"

Tengo otras funciones y esas si las ejecuta (index, create, store, …)

Pero con esta función me arroja el error

“Action …/[email protected] not defined.”

solución

Cuando utilizas

Route::resource('misvistas/docente', 'DocenteController');

Te genera las siguientes 7 rutas por defecto:

+-----------+----------------------------------+------------------+------------------------------------------------------------------------+--------------+
| Method    | URI                              | Name             | Action                                                                 | Middleware   |
+-----------+----------------------------------+------------------+------------------------------------------------------------------------+--------------+
| POST      | misvistas/docente                | docente.store    | [email protected]                           | web          |
| GET|HEAD  | misvistas/docente                | docente.index    | [email protected]                           | web          |
| GET|HEAD  | misvistas/docente/create         | docente.create   | [email protected]                          | web          |
| PUT|PATCH | misvistas/docente/{docente}      | docente.update   | [email protected]                          | web          |
| GET|HEAD  | misvistas/docente/{docente}      | docente.show     | [email protected]                            | web          |
| DELETE    | misvistas/docente/{docente}      | docente.destroy  | [email protected]                         | web          |
| GET|HEAD  | misvistas/docente/{docente}/edit | docente.edit     | [email protected]                            | web          |

Puedes comprobar las rutas disponibles con el comando php artisan route:list.

Por lo que [email protected] no es una ruta definida validad, para poder usarla antes debes de crearla, para que apunte al método indicado:

Route::get('misvistas/mi_ruta/{id}', '[email protected]');

o puedes sobreescribir la ruta existente creada con resource haciendo coincidir la ruta (misvistas/docente/{docente}/edit en este caso) para que apunte al método y controlador que queramos.

Route::get('misvistas/docente/{docente}/edit', '[email protected]')->name('docente.edit');
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *