Curso de Laravel básico
Creación de controladores para manejar la lógica de la aplicación.
Creación y renderizado de vistas. Uso de plantillas Blade para mejorar la legibilidad y reutilización del código HTML. Paso de datos a las vistas desde los controladores.
Los controladores en Laravel son una forma organizada de manejar la lógica de negocio y las solicitudes HTTP. Al separar la lógica de las rutas y moverla a los controladores, el código se vuelve más mantenible y fácil de escalar. En este capítulo, aprenderás cómo crear y gestionar controladores, qué tipos existen en Laravel y cómo utilizarlos para desarrollar aplicaciones web más estructuradas.
Un controlador es una clase que se encarga de manejar las solicitudes entrantes y devolver una respuesta al usuario. Los controladores ayudan a mantener la lógica de la aplicación separada de las rutas, haciendo que el código sea más claro y reutilizable.
Por ejemplo, en lugar de manejar la lógica directamente en la ruta:
php
Route::get('/usuarios', function () { return User::all(); });
Es mejor delegar esta tarea a un controlador:
php
use App\Http\Controllers\UserController;
Route::get('/usuarios', [UserController::class, 'index']);
Para crear un controlador en Laravel, se utiliza el Comando Artisan. Laravel proporciona un comando específico para generar controladores automáticamente.
bash
php artisan make:controller NombreControlador
Ejemplo:
bash
php artisan make:controller UserController
Esto creará un archivo UserController.php
en el directorio app/Http/Controllers
. El archivo de un controlador básico se verá así:
php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller {
//
}
Puedes agregar diferentes métodos en un controlador para manejar diversas solicitudes HTTP.
Ejemplo de un controlador con varios métodos:
php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view('usuarios.index', compact('users'));
}
public function show($id)
{
$user = User::findOrFail($id);
return view('usuarios.show', compact('user'));
}
public function create()
{
return view('usuarios.create');
}
public function store(Request $request)
{
User::create($request->all());
return redirect('/usuarios');
}
}
En este ejemplo, el controlador UserController
tiene cuatro métodos principales:
Laravel facilita la creación de controladores RESTful que siguen los principios de un diseño REST (Representational State Transfer). Un controlador RESTful maneja las operaciones básicas CRUD (Crear, Leer, Actualizar, Eliminar).
Para generar un controlador RESTful con Artisan, usa la opción --resource
:
bash
php artisan make:controller UserController --resource
Este comando crea un controlador con los métodos necesarios para implementar todas las operaciones CRUD.
Ejemplo de un controlador RESTful:
php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
// Listar todos los usuarios
}
public function create()
{
// Mostrar formulario para crear un nuevo usuario
}
public function store(Request $request)
{
// Guardar nuevo usuario en la base de datos
}
public function show($id)
{
// Mostrar un usuario específico
}
public function edit($id)
{
// Mostrar formulario para editar un usuario
}
public function update(Request $request, $id)
{
// Actualizar un usuario en la base de datos
}
public function destroy($id)
{
// Eliminar un usuario de la base de datos
}
}
Este controlador sigue las convenciones RESTful y contiene los siguientes métodos:
index()
: Para listar todos los recursos (usuarios).create()
: Para mostrar un formulario de creación.store()
: Para almacenar el nuevo recurso.show()
: Para mostrar un recurso en particular.edit()
: Para mostrar el formulario de edición.update()
: Para actualizar un recurso.destroy()
: Para eliminar un recurso.Cuando usas un controlador RESTful, puedes definir todas las rutas relacionadas con este recurso de manera sencilla usando Route::resource
.
Ejemplo:
php
Route::resource('usuarios', UserController::class);
Este comando crea automáticamente las siguientes rutas:
Método HTTP | Ruta | Acción del controlador |
---|---|---|
GET | /usuarios | index |
GET | /usuarios/create | create |
POST | /usuarios | store |
GET | /usuarios/{usuario} | show |
GET | /usuarios/{usuario}/edit | edit |
PUT/PATCH | /usuarios/{usuario} | update |
DELETE | /usuarios/{usuario} | destroy |
En algunas aplicaciones, es necesario trabajar con recursos anidados. Por ejemplo, si tienes usuarios que tienen publicaciones, podrías definir rutas para gestionar las publicaciones de un usuario específico.
Ejemplo de controladores anidados:
php
Route::resource('usuarios.posts', PostController::class);
Esto crea rutas para manejar las publicaciones de un usuario, como:
Método HTTP | Ruta | Acción del controlador |
---|---|---|
GET | /usuarios/{usuario}/posts | index |
POST | /usuarios/{usuario}/posts | store |
GET | /usuarios/{usuario}/posts/{post} | show |
PUT/PATCH | /usuarios/{usuario}/posts/{post} | update |
DELETE | /usuarios/{usuario}/posts/{post} | destroy |
En algunas situaciones, un controlador puede tener solo una única acción, como el manejo de un formulario de contacto o una funcionalidad específica. En Laravel, puedes crear un controlador que tenga solo un método usando la magia del método __invoke()
.
Crear un controlador de acción única:
bash
php artisan make:controller ContactController --invokable
Esto creará un controlador con un solo método __invoke()
. Al usar este tipo de controlador, no necesitas especificar el método en las rutas.
Ejemplo de ruta para un controlador de una sola acción:
php
Route::get('/contacto', ContactController::class);
1153 visitas
© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024