Binding Implícito de Enums en Larave
Con la introducción de PHP 8.1, se agregó soporte para Enums. Laravel complementa esta característica permitiéndote utilizar un Enum respaldado en la definición de tus rutas. Esto significa que Laravel solo invocará la ruta si el segmento de la ruta corresponde a un valor válido del Enum. Si no es así, se devolverá automáticamente una respuesta HTTP 404.
Donde escribir el código
El código debe ser escrito en el archivo routes/web.php
de tu aplicación Laravel.
Definición del Enum
Primero, definimos un Enum que representará las categorías. En este caso, tenemos un Enum llamado Category
que tiene dos casos: Fruits
y People
.
php
<?php
namespace App\Enums;
enum Category: string
{
case Fruits = 'fruits';
case People = 'people';
}
Ejemplo de Ruta
A continuación, definimos una ruta que solo se invocará si el segmento de la ruta {category}
es fruits
o people
. Si se proporciona un valor diferente, Laravel devolverá una respuesta 404.
php
use App\Enums\Category;
use Illuminate\Support\Facades\Route;
Route::get('/categories/{category}', function (Category $category) {
return $category->value;
});
Explicación del código
En este ejemplo, estamos utilizando el Enum Category
en la definición de la ruta. Aquí hay un desglose de cómo funciona:
- Definición del Enum: El Enum
Category
se define con dos casos:Fruits
yPeople
. Cada caso tiene un valor asociado, que es una cadena (por ejemplo,'fruits'
). - Uso del Enum en la Ruta: En la ruta
/categories/{category}
, el parámetro{category}
se espera que coincida con uno de los valores del Enum. Esto significa que si el usuario intenta acceder awww.conozcalaravel.test/categories/fruits
, Laravel verificará si'fruits'
es un valor válido del EnumCategory
. - Inyección del Enum: Al tipo de sugerencia de
Category
en la función de la ruta, Laravel inyectará automáticamente el valor correspondiente del Enum. Si el valor es válido, se pasará a la función como un objetoCategory
. - Respuesta en caso de error: Si un usuario intenta acceder a una URL como
www.conozcalaravel.test/categories/vegetables
, Laravel no encontrará un valor correspondiente en el Enum y generará automáticamente una respuesta HTTP 404, indicando que la categoría no es válida.
Visualización Gráfica en Pantalla
Cuando se utiliza el binding implícito de Enums, la URL podría verse así: www.conozcalaravel.test/categories/fruits
. Esto devolvería el valor fruits
.
En la pantalla de Chrome, el resultado podría mostrarse como:
Conclusión
El binding implícito de Enums en Laravel proporciona una forma elegante y segura de manejar parámetros de ruta que deben corresponder a un conjunto específico de valores. Esto no solo mejora la legibilidad del código, sino que también garantiza que solo se acepten valores válidos, lo que reduce la posibilidad de errores.
Enlaces de interés
Para más información, visita:
- Página oficial de Laravel – Aquí encontrarás la documentación completa y recursos sobre Laravel, incluyendo guías y tutoriales sobre cómo utilizar Enums y otras características del framework.
- Curso de enrutamiento de Conozca Laravel – Un curso que ofrece una explicación detallada sobre el enrutamiento en Laravel, ideal para aprender a manejar rutas y enlaces de manera efectiva.
Etiqueta:rutas