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.

Índice
  1. Rutas
  2. Path de controlador
  3. Path de componente Livewire
  4. Path de javascript

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

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

Subir