IronWoods.es

Desarrollo web

Blog / Laravel / Rutas básicas en Laravel y Blade

Existen muchas formas de definir rutas en Laravel 5 y dependiendo de cómo las hemos definido, nos encontraremos con formas diferentes de "emplazarlas" o utilizarlas dentro de Blade.

Lo bueno, lo feo y lo recomendable...

Es recomendable poner un nombre a las rutas.

... y ¿por qué? ... y ¿por qué? - pregunto la hija de Grúfalo.

Al nombrar las rutas y emplazarlas en Blade usando sus nombres, tendremos menos problemas si en un futuro las rutas cambian.

Diferentes formas para nombrar una ruta


Route::get('login', [

'uses' => 'Auth\AuthController@login',

'as'   => 'login'

]);


Route::get(

'login',

'Auth\AuthController@login'

)->name('login');


Ambos ejemplos definen exactamente la misma ruta, pero el último, que usa un método propio para nombrar la ruta, hace está más legible. Desglosando tendríamos: en la segunda línea la ruta, en la siguiente el controlador y método al que llama (después del símbolo @). Finalmente, el nombre de la ruta.

Uso en Blade

Definida la ruta, voy a llamarla en el template Blade, primero usando su nombre, para lo que se usa el helper route():

<a href="{{ route('login') }}">Login</a>


Si usamos route() sin haber dado un nombre a nuestra ruta: ¡la página cruje!


Puede llamarse a una ruta de Laravel directamente, sin usar su nombre:

<a href="{{ url('login') }}">Login</a>


O llamar explícitamente al controlador y al método:

<a href="{{ action('Auth\AuthController@login') }}">Login</a>


En estos dos últimos casos no es necesario que nombremos la ruta previamente.


Cuando usamos action(), sólo con el código de la vista, sabremos exactamente que controlador y método será invocado. Este último método me gusta especialmente al usar rutas post, en formularios.

Y si estás pensando en usar action(), sin definir la ruta correspondiente: ¡la página cruje!


En el caso de que la ruta nos devuelva directamente una vista, por ejemplo:

Route::get(

'cms-login',

function(){

return view('CMS/auth/login');

}

)->name('login');


No podríamos usar action(), lógicamente, pero si url() y también route() si como en este ejemplo le dimos un nombre a la ruta.

Notas

Las rutas en Laravel 5 tienen muchas más opciones, pero con lo expuesto se pueden hacer aplicaciones sencillas.

Para ampliar, y casi de lectura obligatoria, recomiendo esta página.


Pruebas en Windows / Xampp usando PHP 7.1 y Laravel 5.8.


29-06-2019