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 un comentario