Profundizando en las restricciones de parámetros de rutas en Laravel
- Publicado el 17 octubre, 2024
- Palabras: 253
¿Alguna vez te preocupa que los usuarios introduzcan datos extraños en tus parámetros de URL? ¡El método where de Laravel está aquí para salvar el día! Veamos cómo puedes mantener tus rutas bajo control con algunas restricciones simples.

#El poder de Where
El método where te permite establecer reglas para los parámetros de tu ruta mediante expresiones regulares. ¡Es como tener un discriminador para tus URL!
Uso básico
Aquí te explicamos cómo puedes usar where:
Route::get('/user/{name}', function (string $name) {
// ...
})->where('name', '[A-Za-z]+');
Como ser más específico con los números
¿Necesitas asegurarte de que un identificador es en realidad un número? No hay problema:
Route::get('/user/{id}', function (string $id) {
// ...
})->where('id', '[0-9]+');
Esta ruta solo coincidirá si {id} está formada solo por dígitos.
#Manejo de múltiples parámetros
¿Tienes más de un parámetro para manejar? Puedes encadenarlos:
Route::get('/user/{id}/{name}', function (string $id, string $name) {
// ...
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
Aquí le estamos diciendo:
- id debe ser solo números
- name debe ser solor letras minúsculas
Ejemplo práctico: URL de publicaciones de blog
Supongamos que estás creando un blog con URL atractivas. Puedes configurarlo de la siguiente manera:
use AppHttpControllersBlogController;
Route::get('/blog/{year}/{month}/{slug}', [BlogController::class, 'show'])
->where([
'year' => 'd{4}',
'month' => '0[1-9]|1[0-2]',
'slug' => '[a-z0-9-]+'
]);
En este ejemplo:
- El año debe tener exactamente 4 dígitos
- El mes debe ser del 01 al 12
- El slug puede contener letras minúsculas, números y guiones
Esto garantiza que las URL como /blog/2023/05/my-awesome-post funcionen, pero /blog/not-a-year/13/oops! no coincida.
Al usar el método where, no solo estás escribiendo rutas, sino que estás creando una estructura de URL sólida y autovalidada para tu aplicación. ¡Es una técnica simple que puede ahorrarte dolores de cabeza en el futuro!
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión