Controllers

Les contrôleurs orchestrent la logique de votre application. Ils reçoivent les requêtes et retournent des réponses.

Structure de base

Les contrôleurs sont situés dans app/Controllers/. Ils étendent généralement la classe abstraite River\Controller pour bénéficier des helpers.

<?php
namespace App\Controllers;

use River\Controller;
use River\Response;

class Blog_ctrl extends Controller
{
    public function show(): Response
    {
        // Récupérer un paramètre de route
        $id = $this->param('id');

        // Retourner une vue
        return $this->render('blog/show', [
            'id' => $id,
            'title' => 'Mon Article'
        ]);
    }
}

Injection de Dépendances

River supporte l'injection de dépendances dans le constructeur. Type-hint simplement vos dépendances :

use River\Controller;
use River\View;
use River\Request;
use River\Router;
use App\Repository\PostRepository;

class Blog_ctrl extends Controller
{
    // Injection automatique de PostRepository
    public function __construct(
        View $view,
        Request $request,
        Router $router,
        private PostRepository $posts
    ) {
        parent::__construct($view, $request, $router);
    }

    public function index(): Response
    {
        $posts = $this->posts->findAll();
        return $this->render('blog/index', ['posts' => $posts]);
    }
}

Helpers Utiles

Méthode Description
$this->render($tpl, $data) Retourne une réponse HTML rendue par le moteur de template.
$this->json($data) Retourne une réponse JSON.
$this->redirect($url) Redirige vers une autre URL.
$this->param($key) Récupère un paramètre de route.
$this->url($name, $params) Génère une URL à partir d'une route nommée.
$this->not_found() Retourne une erreur 404 standard.