Organización rutas y carpetas
Para tener una buena organización siguiendo las buenas prácticas de programación en Laravel, se suele organizar los ficheros en carpetas según su clasificación y profundidad de cada sección.
Rutas
Controlar la organización de rutas siguiendo un patrón de profundidad de carpetas.
routes\admin.php
Crear las 7 rutas de un CRUD automáticamente con resource.
Route::resource('roles', RoleController::class)->names('roles');
//usuarios también con resource para crud con 3 rutas espedificas
Route::resource('users', UserController::class)->only(['index', 'edit', 'update'])->names('users');
Crear rutas específicas de un CRUD con resource.
Route::resource('users', UserController::class) ->only(['index', 'edit', 'update'])->names('users');
Proteger las rutas definiendo un constructor dentro del controlador
public function __construct(){
$this->middleware('can:Listar role') ->only('index');
$this->middleware('can:Crear role') ->only('create','store');
$this->middleware('can:Editar role') ->only('edit','update');
$this->middleware('can:Eliminar role') ->only('destroy');
}
Providers
Dentro de este fichero se define el nombre y prefijo que va a tenerse en cuenta para el resto del proyecto
app\Providers\RouteServiceProvider.php
- Middleware de autentificación
- Nombre por el que se va a llamar
- Prefijo que llevan todas las rutas
- Nombre de espacio o agrupación de clases o ficheros
- Grupo con los mismos atributos
Así quedaría el contenido
$this->routes(function () {
...
Route::middleware('web', 'auth') ->name('admin.') ->prefix('admin') ->namespace($this->namespace) ->group(base_path('routes/admin.php'));
Path de controlador
Un controlador se puede organizar en subcarpetas a partir de la carpeta Controllers, por ejemplo para tener organizado la parte de administración se mete dentro de una carpeta Admin.
app\Http\Controllers\Admin\UserController.php
Llamada a la vista index en carpeta Admin\users
public function index(){
}
return view('admin.users.index');
Path de vistas del controlador
Una vista de un controlador se puede organizar en subcarpetas a partir de la carpeta views, por ejemplo para tener organizado la parte la vista de administración se mete dentro de una carpeta Admin, y a su vez en una de users
resources\views\admin\users\index.blade.php
Path de componente Livewire
Un componente de livewire se puede organizar en subcarpetas a partir de la carpeta Livewire, por ejemplo para tener organizado la parte de administración se mete dentro de una carpeta Admin.
app\Http\Livewire\Admin\UsersIndex.php
Llama a la vista del componente a través del método render
public function render(){
...
return view('livewire.admin.users-index', compact('users'));
}
Path de vistas del componente Livewire
Una vista de un controlador se puede organizar en subcarpetas a partir de la carpeta views, por ejemplo para tener organizado la parte la vista de administración se mete dentro de una carpeta Admin, y a su vez en una de users
resources\views\livewire\admin\ users-index.blade.php
Path de javascript
El código de javascript reutilizable, también se puede organizar en subcarpetas. Por ejemplo para rellenar campos de slug o utilizar el componente CkEditor.
Para este ejemplo se crean las carpetas dentro de la carpeta public \js
public\js\instructor\courses\form.js
Desde la vista se llama con el etiqueta javascript y referencia al fichero, con el método asset. Este método toma como raíz, la carpeta public del sitio (configurale en config).
<script src="{{ asset('js/courses/courses/form.js') }}"></script>
Resumen de rutas de organización
- Controlador y su vista
app\Http\Controllers\Admin\UserController.php
resources\views\admin\users\index.blade.php
- Componente y su vista
app\Http\Livewire\Admin\UsersIndex.php
resources\views\livewire\admin\users-index.blade.php
Deja una respuesta