Controladores y acciones
Cree controladores con artisan y gestione solicitudes en métodos de acción.
Controladores y acciones es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué es un controlador?
Un controlador agrupa la lógica relacionada con el procesamiento de solicitudes. En lugar de usar clausuras en los archivos de rutas, delega el trabajo en métodos del controlador (acciones).
Generación de un controlador
Use Artisan para generar la estructura básica de un controlador.
$ php artisan make:controller UserController
$ php artisan make:controller PostController --resourceControlador básico
Un controlador extiende Controller y tiene métodos públicos para cada acción de ruta.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index(): \Illuminate\View\View
{
$users = User::all();
return view("users.index", compact("users"));
}
}Acceso a la solicitud
Indique el tipo Illuminate\Http\Request en el método de acción; Laravel lo inyecta automáticamente.
<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
$name = $request->input("name");
$email = $request->input("email");
User::create(["name" => $name, "email" => $email]);
return redirect()->route("users.index");
}Validación de formularios
Use $request->validate() para validar los datos de entrada. Si la validación falla, Laravel redirige automáticamente a la página anterior con los errores.
<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
$validated = $request->validate([
"name" => "required|string|max:255",
"email" => "required|email|unique:users",
]);
User::create($validated);
return redirect()->route("users.index");
}Métodos de un controlador de recursos
Un controlador de recursos tiene 7 métodos convencionales: index, create, store, show, edit, update, destroy.
Controladores de una sola acción
Los controladores invocables tienen un único método __invoke(); son ideales para acciones que hacen exactamente una cosa.
<?php
class SendWelcomeEmail extends Controller
{
public function __invoke(User $user): void
{
Mail::to($user)->send(new WelcomeMail($user));
}
}
// Route:
Route::post("/users/{user}/welcome", SendWelcomeEmail::class);Middleware de controladores
Aplique middleware a acciones específicas mediante el método middleware() en el constructor.
<?php
public function __construct()
{
$this->middleware("auth")->except(["index", "show"]);
}Inyección de dependencias
Indique los tipos de los servicios en los parámetros del método de acción; Laravel los resuelve mediante el contenedor de servicios.
<?php
public function store(Request $request, Mailer $mailer): JsonResponse
{
// $mailer is auto-injected
}Devolución de respuestas
Los controladores pueden devolver vistas, redirecciones, respuestas JSON y descargas de archivos.
<?php
return view("users.show", compact("user"));
return redirect()->back()->with("status", "Saved!");
return response()->json($user);
return response()->download(storage_path("report.pdf"));Espacios de nombres de los controladores
De forma predeterminada, todos los controladores se encuentran en App\Http\Controllers. Los subdirectorios crean subespacios de nombres: App\Http\Controllers\Admin\UserController.
Mantener delgados los controladores
Los controladores deben delegar la lógica de negocio en clases de servicio o acciones. Procure que los controladores solo validen los datos de entrada, llamen a un servicio y devuelvan una respuesta.
Resumen
Genere controladores con Artisan. Indique los tipos de Request y de los servicios para habilitar la inyección automática. Use validate() para validar los datos de entrada. Mantenga delgados los controladores y delegue el trabajo en los servicios.
Comprobación rápida
¿Qué comando de Artisan genera un controlador de recursos?
Preguntas frecuentes
¿La lección «Controladores y acciones» es gratis?
Sí — el texto completo de «Controladores y acciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Controladores y acciones»?
Cree controladores con artisan y gestione solicitudes en métodos de acción. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Controladores y acciones»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estructura de proyectos Laravel
- Definición de rutas en Laravel
- Controladores y acciones
- Plantillas y vistas de Blade