Controladores en Laravel

Laravel

Aunque podríamos redigir las peticiones HTTP desde el fichero routes/web.php, no es recomendable hacerlo desde ahí. El fichero crecería demasiado dificultando su mantenimiento.

Hay que trabajar con ficheros externos donde coloquemos la lógica que necesitemos.

Creación de controladores

Mediante el comando artisan:

php artisan make:controller <NOMBRE_CONTROLADOR>

Por ejemplo, creamos un controlador para administrar la ruta principal (/)

php artisan make:controller HomeController

Se habrá creado un fichero HomeController.php dentro de app/Http/Controllers con el siguiente contenido:

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
class HomeController extends Controller
{
    //
}

Para asignarle el control de la ruta a un controlador, en el archivo routes/web.php:

use Illuminate\Http\Controllers\HomeController;
 
Route::get("/", [HomeController::class, 'index']);

La ruta / será gestionada por el controlador HomeController y el método index.

Cuando un controlador tiene un único método, podemos llamarlo __invoke:

namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
class HomeController extends Controller
{
    public function __invoke() {
        return "Bienvenido a la página principal";
    }
}

Y donde lo vayamos a usar no tendremos que indicar el método:

use Illuminate\Http\Controllers\HomeController;
 
Route::get("/", HomeController::class);