Para la gestión de la parte administrativa voy a usar el paquete AdminLTE 3
Voy a generar una url llamada admin que utilizaré para desarrollar la parte de administración del blog. Esta url no la voy a declarar en el fichero web.php sino que creo uno nuevo llamado routes/admin.php dentro del cual iré definiendo las rutas de administrador. Para que laravel reconozca al archivo admin.php como administrador de rutas debo especificárselo dentro del método boot del archivo app/Providers/RouteServiceProvider.php
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/publicfunctionboot(){$this->configureRateLimiting();$this->routes(function(){Route::prefix('api')->middleware('api')->namespace($this->namespace)->group(base_path('routes/api.php'));Route::middleware('web')->namespace($this->namespace)->group(base_path('routes/web.php'));Route::middleware('web','auth')->prefix('admin')->namespace($this->namespace)->group(base_path('routes/admin.php'));});}
Como se puede ver al final he añadido a admin.php como administrador de rutas y he especificado el middleware auth para que solo se accesible si estamos autentificados y el método prefix para añadir el prefijo admin a todas las rutas y así no tener que escribirlo en todas.
Creo la primera ruta dentro del fichero administrador de rutas admin.php que acabo de crear y le añado el nombre del controlador que va a gestionar la ruta.
1
2
enrique@enrique-server:/var/www/laravel/blog_laravel$ php artisan make:controller Admin/HomeController
Controller created successfully.
enrique@enrique-server:/var/www/laravel/blog_laravel$ php artisan adminlte:install
Basic assets installed successfully.
Configuration file installed successfully.
Translation files installed successfully.
The installation is complete.
Ya está instalado en el proyecto. Para poder usarlo sigo las instrucciones de su página y dentro de la vista ``resources/views/admin/index.blade.php`
extiendo su plantilla.
index.blade.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@extends('adminlte::page')@section('title','Blog con Laravel')@section('content_header')<h1>Dashboard</h1>@stop@section('content')<p>Welcometothisbeautifuladminpanel.</p>@stop@section('css')<linkrel="stylesheet"href="/css/admin_custom.css">@stop@section('js')<script>console.log('Hi!');</script>@stop
Vuelvo al navegador web para revisar los cambios.
Personalizando la plantilla adminLTE
Para comenzar la personalización abro el archivo php config/adminlte.php y cambio su nombre en el logo y el enlace para que me dirija a página principal situada en el directorio raíz.
/*
|--------------------------------------------------------------------------
| Logo
|--------------------------------------------------------------------------
|
| Here you can change the logo of your admin panel.
|
| For more detailed instructions you can look here:
| https://github.com/jeroennoten/Laravel-AdminLTE/#63-logo
|
*/'logo'=>'<b>Blog</b> de Buceo',..../*
|--------------------------------------------------------------------------
| URLs
|--------------------------------------------------------------------------
|
| Here we can modify the url settings of the admin panel.
|
| For more detailed instructions you can look here:
| https://github.com/jeroennoten/Laravel-AdminLTE/#65-urls
|
*/'use_route_url'=>false,'dashboard_url'=>'/',
Necesito incluir en el menú de navegación de la derecha situado en resources/views/livewire/navigation.blade.php, un enlace que permita a los administradores acceder al panel de administración. <a href="{{route('admin.home')}}" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100" role="menuitem">Dashboard</a>
Lo siguiente que quiero es modificar es el menú de navegación de la barra lateral de la izquierda. Para ello dentro de adminlte.php modifico la sección Menu Items.
/*
|--------------------------------------------------------------------------
| Menu Items
|--------------------------------------------------------------------------
|
| Here we can modify the sidebar/top navigation of the admin panel.
|
| For more detailed instructions you can look here:
| https://github.com/jeroennoten/Laravel-AdminLTE/#8-menu-configuration
|
*/'menu'=>[['text'=>'search','search'=>true,'topnav'=>true,],['text'=>'blog','url'=>'admin/blog','can'=>'manage-blog',],['text'=>'pages','url'=>'admin/pages','icon'=>'far fa-fw fa-file','label'=>4,'label_color'=>'success',],
Cambio el item pages por dashboard y cambio su icono y su url (uso la ruta en su lugar, es lo mismo).