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.
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.
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.
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.
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.
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