Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:laravel:crud

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:php:frameworks:laravel:crud [2025/03/07 11:52] tempwininformatica:programacion:php:frameworks:laravel:crud [2025/03/11 12:06] (actual) – [Controlador] tempwin
Línea 2: Línea 2:
  
 [[informatica:programacion:php:frameworks:laravel|Laravel]] [[informatica:programacion:php:frameworks:laravel|Laravel]]
 +
 +En esta página se pone un ejemplo sencillo de cómo crear un CRUD en Laravel para añadir (//Create//), mostrar (//Read//), actualizar (//Update//) y eliminar (//Delete//) artículos.
  
 ===== Rutas ===== ===== Rutas =====
Línea 29: Línea 31:
 Route::delete('/posts/{post}', [PostController::class, 'destroy']) Route::delete('/posts/{post}', [PostController::class, 'destroy'])
 </code> </code>
-===== Listar posts =====+ 
 +==== Abreviando rutas ==== 
 + 
 +Si hemos seguido ciertas convenciones en el nombre de los archivos, Laravel nos permitirá crear todas las rutas que vimos antes de una manera muy rápida: 
 + 
 +<code php> 
 +Route::resource('posts', PostController::class); 
 +</code> 
 + 
 +Laravel supone que el controlador ''PostController.php'' tiene los siguientes métodos típicos de un CRUD: 
 + 
 +  * ''index'' 
 +  * ''create'' 
 +  * ''store'' 
 +  * ''show'' 
 +  * ''edit'' 
 +  * ''destroy'' 
 + 
 +Y creará por nosotros las 7 rutas necesarias. 
 + 
 +Para comprobarlo, podemos ejecutar el siguiente comando que listará las rutas definidas en nuestro proyecto de Laravel: 
 + 
 +<code bash> 
 +php artisan route:list 
 +</code> 
 + 
 +La salida debe ser la misma que cuando definimos las rutas por separado. 
 + 
 +Si quisiéramos que no se creasen todas las rutas: 
 + 
 +<code php> 
 +Route::resource('posts', PostController::class) 
 +        ->except(['destroy', 'edit']); 
 +</code> 
 + 
 +El código anterior creará todas las rutas menos las de ''destroy'' (eliminación de registros) y ''edit'' (modificar registros). 
 + 
 +También podemos hacer lo contrario, es decir, especificar las rutas que sí queremos que se creen: 
 + 
 +<code php> 
 +Route::resource('posts', PostController::class) 
 +        ->only(['index', 'create', 'store']); 
 +</code> 
 + 
 +Así solo se crearán las rutas ''index'', ''create'' y ''store''
 +===== Modelo ===== 
 + 
 +Creamos un modelo para gestionar los posts: 
 + 
 +<code bash> 
 +php artisan make:model Post 
 +</code> 
 + 
 +Esto habrá creado el modelo ''Post.php'' en app/Models/: 
 + 
 +<code php> 
 +namespace App\Models; 
 +  
 +use Illuminate\Database\Eloquent\Model; 
 +  
 +class Post extends Model  
 +
 +  
 +
 +</code> 
 + 
 +===== Controlador ===== 
 + 
 +Creamos un controlador para los posts: 
 + 
 +<code php> 
 +php artisan make:controller PostController --create 
 +</code> 
 + 
 +<WRAP center round info 60%> 
 +El argumento ''%%--create%%'' hace que se generen los métodos típicos para un CRUD: ''index'' (listar), ''create'', ''store'' (guardar), ''edit'', ''update'' (modificar) y ''destroy'' (eliminar).  
 +</WRAP> 
 + 
 +Se habrá creado un fichero ''PostController.php'' dentro de ''app/Http/Controllers'' con el siguiente contenido:  
 + 
 +<code php> 
 +<?php 
 + 
 +namespace App\Http\Controllers\; 
 + 
 +use Illuminate\Http\Request; 
 +use App\Models\Post; 
 + 
 +class PostController extends Controller  
 +
 +    public function index() {} 
 + 
 +    public function create() {}         
 + 
 +    public function store(Request $request) {} 
 +     
 +    public function show(string $id) {} 
 +     
 +    public function edit(string $id) {}         
 +     
 +    public function update(Request $request, string $id) {    } 
 +     
 +    public function destroy(string $id) {    }             
 + 
 +
 +</code> 
 + 
 +===== Vistas ===== 
 + 
 +Vista para listar los posts: 
 + 
 +<code bash> 
 +php artisan make:view posts.index 
 +</code> 
 + 
 +Vista para mostrar un post: 
 + 
 +<code bash> 
 +php artisan make:view posts.show 
 +</code> 
 + 
 +Vista para crear un post: 
 + 
 +<code bash> 
 +php artisan make:view posts.create 
 +</code> 
 + 
 +Vista para mostrar editar un post: 
 + 
 +<code bash> 
 +php artisan make:view posts.edit 
 +</code> 
 + 
 +Las vistas se crearán en ''resources/views/posts''
 + 
 +===== Operaciones ===== 
 + 
 +==== Listar posts ====
  
 Controlador ''PostController.php'', centrándonos en el listado de posts: Controlador ''PostController.php'', centrándonos en el listado de posts:
Línea 53: Línea 192:
 Vista para listar los posts: Vista para listar los posts:
  
-<code>+<code bash>
 php artisan make:view posts.index php artisan make:view posts.index
 </code> </code>
Línea 69: Línea 208:
 </code> </code>
  
-===== Mostrar un post =====+==== Mostrar un post ====
  
 Controlador ''PostController.php'', centrándonos en mostrar un post en concreto: Controlador ''PostController.php'', centrándonos en mostrar un post en concreto:
Línea 115: Línea 254:
  
  
-===== Crear un post =====+==== Crear un post ====
  
 Controlador ''PostController.php'', centrándonos en la creación de un post: Controlador ''PostController.php'', centrándonos en la creación de un post:
Línea 196: Línea 335:
 </code> </code>
  
-===== Editar un post =====+==== Editar un post ====
  
 Crearemos dos nuevas rutas en ''routes/web.php'': Crearemos dos nuevas rutas en ''routes/web.php'':
Línea 286: Línea 425:
  
  
-===== Eliminar un post =====+==== Eliminar un post ====
  
 Creamos una nueva ruta en ''routes/web.php'': Creamos una nueva ruta en ''routes/web.php'':
informatica/programacion/php/frameworks/laravel/crud.1741344726.txt.gz · Última modificación: por tempwin