Salt la conținut

Rutare

Sistemul de rutare din Leto este construit în jurul clasei RoutesCollector, care expune metode fluente pentru definirea rutelor.

Definirea rutelor

Rutele se definesc în metoda routes() a clasei aplicației sau a modulelor:

use App\Controllers\HelloController;
use Leto\Routing\RoutesCollector;

class App
{
    public function routes(RoutesCollector $route): void
    {
        $route->get('/', [HelloController::class, 'hello']);
        $route->post('/submit', [FormController::class, 'submit']);
        $route->put('/update/{id}', [UpdateController::class, 'update']);
        $route->delete('/delete/{id}', [DeleteController::class, 'delete']);
    }
}

Parametri de rută

$route->get('/users/{id}', [UserController::class, 'show']);
$route->get('/posts/{slug}', [PostController::class, 'view']);

Middleware

Rutele pot avea middleware atașat:

$route->get('/admin', [AdminController::class, 'dashboard'])
      ->middleware(AuthMiddleware::class);

Interfața middleware:

use Closure;
use Leto\Http\Request;
use Leto\Routing\MiddlewareInterface;

class AuthMiddleware implements MiddlewareInterface
{
    public function handle(Request $request, Closure $next): mixed
    {
        if (!isset($_SESSION['user'])) {
            return new Redirect('/login');
        }
        return $next($request);
    }
}

Managerul de rute

RoutesManager coordonează încărcarea rutelor din toate modulele aplicației. Fiecare modul își înregistrează rutele prin propria metodă routes().