Quiero saber si es posible agregar nuevos métodos a un controlador de recursos en Laravel y cómo lo hace.
Sé que estos métodos son los predeterminados (indexar, crear, almacenar, editar, actualizar, destruir). Ahora quiero agregar métodos y rutas adicionales al mismo controlador.
¿Es eso posible?
::resource
contrario, recibirá un mensaje de error, "No hay resultados de consulta para el modelo".Route::get('foo/{id}', ...)
. Esto traga todas las rutas que comienzanfoo
y tienen un segmento adicional, incluidofoo/bar
.Acabo de hacer eso, para agregar un método GET "eliminar".
Después de crear sus archivos, solo necesita agregar
a 'proveedores' en su aplicación / config.php
Edite el alias de ruta en este mismo archivo:
cambiándolo a
Y asegúrese de que esos archivos se carguen automáticamente, deben estar en algún directorio que tenga en su composer.json (sección "carga automática").
Entonces solo necesitas:
Y esto (mira la última línea) es el resultado si ejecutas
php artisan routes
:Esos son mis archivos fuente:
ExtendedRouteFacade.pas
ExtendedRouter.pas
ExtendedRouteServiceProvider.pas
fuente
Si, es posible ...
En mi caso, agrego método: datos para manejar la solicitud de /data.json en el método HTTP POST.
Esto es lo que hice.
Primero ampliamos Illuminate \ Routing \ ResourceRegistrar para agregar nuevos datos de método
Después de eso, cree su nuevo ServiceProvider o use AppServiceProvider en su lugar.
En el arranque del método , agregue este código:
luego :
agregar a su ruta:
Verifique
php artisan route:list
y encontrará un nuevo método 'datos'fuente
Pruébelo. Ponga métodos adicionales como getData () etc. etc. Esto me funcionó para mantener limpio route.php
fuente
Usando Laravel> 5 Encuentra el archivo web.php en la carpeta de rutas agrega tus métodos
Puede usar route :: resource para enrutar todos estos métodos indexar, mostrar, almacenar, actualizar, destruir en su controlador en una línea
fuente
Simplemente agregue un nuevo método y una ruta a ese método.
En tu controlador:
Y en tus rutas web
Solo asegúrese de que el método en el controlador sea público.
fuente
Esto funciona bastante bien también. No es necesario agregar más rutas, solo use el método show del controlador de recursos de esta manera:
Uso el valor predeterminado para lanzar una página de error personalizada.
fuente