Pro Tips Numero 3 | Expreciones regulares en las rutas y mas

LARAVEL
Laravel permite la creación de una exprecion regular para que tengamos un mayor control y mas seguridad, en este caso permite definir expresiones regulares para los parámetros que va a tener una ruta, en este caso se tiene una ruta donde se espera como parámetro un nombre. 

Se quiere que la ruta solo permita letras en mayuscula y minuscula. Para ellos al final de la ruta con el metodo where se le pasa un array con los identificadores de los parámetros y una exprecion regular asociada al parámetros.

Route::get('colaboradores/{nombre}', function($nombre){
return "Mostrando el colaborador $nombre";
})->where(array('nombre' => '[a-zA-Z]+'));

Validar si una vista existe

Puede pasar que estemos retornando en el controlador y una vista no exista por tal motivo se genera un excepcion, para estos casos lo mejor es validar si existe la vista creada, entonces para eso se puede usar de la siguiente manera.


view()->exists('calendario.mes')





Nomenclatura de modelos

Los modelos representan una entidad y asu vez una tabla de la base de datos, la nomenclatura recomendada por laravel es que el modelo esten en singular y el nombre la tabla en la base de datos en plural y en minuscula:
  • Modelo => User
  • Base de datos => users
Por eso en este caso si no se declara el atributo $table en el modelo laravel interpretara que el nombre de la tabla es el mismo nombre del modelo pero en minúsculas y en plura.

Retornar un response con una vista 

Realmente casi no se hace por que con el helper view(), desde el controlador se retorna directamente la vista pero aca lo que se hacer es retornar un objeto response el cual lleva una vista y unos headers.

En el siguiente ejemplo se retorna un response que lleva una vista de error y unos headers. El pimero indica es estado de la respuesta y el segundo que la pagina se va a refrecar hacia otra vista luego de 5 segundos.


Route::get('/', function () {
    return response()->view('welcome')->header('status', 400)->header('Refresh', '5; url='.route('sinf'));
});

Route::get('404',function(){
    return "hols";
})->name("sinf");

0 Comentarios