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 12:28] – [Rutas] tempwininformatica:programacion:php:frameworks:laravel:crud [2025/03/11 12:06] (actual) – [Controlador] tempwin
Línea 30: Línea 30:
 // Para eliminar un post // Para eliminar un post
 Route::delete('/posts/{post}', [PostController::class, 'destroy']) Route::delete('/posts/{post}', [PostController::class, 'destroy'])
 +</code>
 +
 +==== 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> </code>
  
Línea 37: Línea 102:
  
 <code php> <code php>
-php artisan make:controller PostController+php artisan make:controller PostController --create
 </code> </code>
-===== Listar posts =====+ 
 +<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 63: 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 79: 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 125: 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 206: 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 296: 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.1741346913.txt.gz · Última modificación: por tempwin