Laravel rutas

Para crear una ruta web en laravel 8 hay que introducir el código en el fichero routes\web.php

Índice
  1. Ruta por defecto
  2. Configurar rutas a medida
  3. URL Amigables

Ruta por defecto

Route::get('/', function () {    return view('welcome');});

Ruta con middleware

Para acceder a la ruta www.midomino.com/dashboard hay que estar autenticado y de ello se encarga el middleware auth.

name se utliza como alias para llamar a la ruta por ese nombre desde cualquier parte del sitio web.

Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function (){
return view( 'dashboard');
})->name('dashboard');

Ruta con un componente livewire como controlador

Utilizar un componente livewire como controlador tiene la ventaja de poder mostrar de forma reactiva cualquier parte de la página mostrada.

Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', NombreComponente::class)->name('dashboard');

Pasar un parámetro al componente mediante url

La url lleva un parámetro name que pasa al componente livewire o controlador.

Route::get('prueba/{name}', NombreComponente::class);

El componente o controlador puede recibirlo y guardar su valor

public $name;
public function mount($name){        $this->name= $name;    }

Configurar rutas a medida

Al hacer login o registrarse, por defecto lleva a la ruta dashboard. Para cambiar el comportamiento por defecto hay que cambiar algunas configuraciones.

Modificar providers

Hay que modificar el fichero RouteServiceProvider, donde está la variable HOME cambiar por la nueva ruta. si es cambiar a la página principal vale con poner solo '/'

app\Providers\RouteServiceProvider.php

public const HOME = '/dashboard';
public const HOME = '/';

Crear nuevo fichero de rutas

Por defecto se crean las rutas en el fichero web, pero se puede crear un nuevo fichero, por ejemplo para rutas de administrador.

routes\web.php

Para comezar a crear el nuevo sistema de rutas se crea un fichero llamado admin.php nuevo dentro de la carpeta routes, para este ejemplo, realizando dos acciones:

routes\admin.php
  1. Agregar al principio del fichero el código.
    <?php
    use Illuminate\Support\Facades\Route;

2. Para que laravel reconozca como fichero de rutas, agregarlo al fichero RouteServiceProvider.php

app\Providers\RouteServiceProvider.php

Dentro de la función boot(), agregar al routes el código indicando el nuevo fichero admin.php

Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));

Con estos dos pasos ya se puede crear rutas dentro del nuevo fichero de rutas.

Ruta para usuarios autenticados con prefijo

Para que la ruta solamente puedan acceder usuarios registrados, hay que añadir al fichero RouteServiceProvider.php, el middleware auth.

Además si se desea que las rutas tengan un prefijo, se puede indicar con el metodo prefix y como parámetro el nombre del prefijo.

Route::middleware('web', 'auth')
->prefix('admin')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));

Así todas las rutas de este fichero serán con prefijo admin, sin necesidad de idicarlo en la ruta
Route::get('pagina', function(){
return "pagina de prueba";
});

http://midominio.test/admin/pagina

URL Amigables

Se puede acceder a rutas a través de una ruta amigables o slug en vez de acceder por el id del registro.

Por ejemplo un post, es más recomendable de cara a SEO y buenas prácticas el utilizar un nombre descriptivo para llamar a una página.

  • URL por id: https://midominio.com/post=1
  • URL amigable con slug: https://midominio.com/este-es-el-slug-del-post/

Para conseguir esto, hay que definir en el modelo el método getRouteKeyName, ademas de que el modelo tenga el campo slug en su base de datos.

public function getRouteKeyName(){
return "slug";
}

Así cuando se llame a la ruta pasando como parámetro el objeto modelo, ya sabe que debe mostrar el slug.

<a href="{{route('courses.post', $post)}}">Ver post</a>

Ver más cosas interesanes de los modelos en Laravel.

Espero te sirva de utilidad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir