Enrutamiento en CodeIgniter 4: rutas explícitas y Auto Routing Improved
Define rutas GET y POST, controladores y parámetros en CodeIgniter 4; configura Auto Routing Improved y conoce sus límites.
El enrutador relaciona una URL y un método HTTP con un controlador. Las rutas explícitas muestran qué acciones están disponibles; Auto Routing Improved es una alternativa que se configura de forma deliberada. Comprueba tu versión de CodeIgniter antes de aplicar estos ejemplos basados en la documentación reciente.
Define rutas explícitas
Añade las rutas al objeto $routes ya disponible en app/Config/Routes.php. Importa Products, usa GET para consultar y POST para crear. (:num) captura un segmento numérico y se lo pasa a show. Las tres rutas son un ejemplo coherente; adapta nombres y permisos a tu aplicación.
<?php
// app/Config/Routes.php
use App\Controllers\Products;
$routes->get('products', [Products::class, 'index']);
$routes->get('products/(:num)', [Products::class, 'show']);
$routes->post('products', [Products::class, 'create']);
Crea el controlador
Crea app/Controllers/Products.php con el espacio de nombres App\Controllers. Los métodos públicos vinculados a las rutas devuelven una respuesta; helperMethod es protegido y no es una acción expuesta. El ejemplo devuelve datos ficticios: añade validación, almacenamiento y control de acceso antes de crear recursos reales.
<?php
// app/Controllers/Products.php
namespace App\Controllers;
class Products extends BaseController
{
public function index(): string
{
return 'Products';
}
public function show(int $id): string
{
return 'Product ' . $id;
}
public function create()
{
return $this->response->setStatusCode(201)->setJSON(['created' => true]);
}
protected function helperMethod(): void
{
// Internal logic.
}
}
Protege las acciones
Usa GET para leer y POST para modificar. Protege las acciones sensibles con autenticación y autorización, valida entradas y configura la protección CSRF para los formularios según la aplicación. Definir una ruta no asegura por sí solo su controlador.
Auto Routing Improved como alternativa
Activa $autoRoute=true en app/Config/Routing.php y $autoRoutesImproved=true en app/Config/Feature.php. Los métodos accesibles llevan un prefijo de verbo HTTP: getHello() puede responder a GET /hello-world/hello en HelloWorld. La ruta predeterminada a Home::index puede impedir el enrutamiento automático de /; elimínala si quieres que también la raíz se resuelva automáticamente. Los fragmentos siguientes corresponden a archivos distintos y muestran otro modo de uso; comprueba las prioridades antes de combinarlo con las rutas explícitas del ejemplo.
// app/Config/Routing.php
public bool $autoRoute = true;
// app/Config/Feature.php
public bool $autoRoutesImproved = true;
// Example auto-routed method: GET /hello-world/hello
public function getHello(): string { return 'Hello'; }
Nombres, segmentos y límites
La correspondencia entre segmentos URL, controladores y métodos sigue las reglas de la versión instalada. Prefiere rutas explícitas para URL públicas estables o controles precisos de métodos y filtros. Evita exponer accidentalmente métodos públicos o acciones administrativas.
Comprueba las rutas
Ejecuta php spark routes para inspeccionar rutas registradas y prueba peticiones GET y POST permitidas y prohibidas. Comprueba respuestas 404/405, orden de las rutas y filtros. Las rutas dinámicas pueden no aparecer entre las rutas explícitas registradas.
php spark routes
Fuentes oficiales
Rutas: https://codeigniter4.github.io/CodeIgniter4/incoming/routing.html ; Auto Routing Improved: https://codeigniter4.github.io/CodeIgniter4/incoming/auto_routing_improved.html ; controladores: https://codeigniter4.github.io/CodeIgniter4/incoming/controllers.html .
Compartir
¿Cuál es tu reacción?
Me gusta
0
No me gusta
0
Me encanta
0
Divertido
0
Enfadado
0
Triste
0
¡Vaya!
0