Laravel rutas
Para crear una ruta web en laravel 8 hay que introducir el código en el fichero routes\web.php
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
p
ublic 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
- 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 rutaRoute::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