Guide
Views et layouts
Comment le layout, la page view, les données partagées et les partials s’assemblent.
Comment la page finale est assemblée
Le controller choisit un layout et une page view, transmet les données partagées et retourne une HTML response. En simplifiant : layout + page view + shared data = rendered page.
return $this->html(
$this->view()->template(
'layouts.app',
'pages.article-detail',
[
'article' => $article,
],
),
);Layouts, page views et partials
Le layout contient la structure commune de la page. La page view contient le contenu spécifique. Un partial ou un petit composant rend un fragment réutilisable.
<?php $this->start('title'); ?>Article detail<?php $this->end(); ?>
<article>
<h1><?= e($article['title'] ?? '') ?></h1>
<?= $this->partial('partials.article-meta', ['article' => $article]) ?>
</article>Helper facultatif dans AppController
Si l’application utilise souvent ce mode de rendu, elle peut ajouter par exemple AppController::page() au-dessus de view()->template(). C’est une commodité applicative, pas une exigence du framework.
<?php
declare(strict_types=1);
namespace App\Controllers;
use Lemonade\Framework\Core\AbstractController;
use Psr\Http\Message\ResponseInterface;
abstract class AppController extends AbstractController
{
/**
* @param array<string, mixed> $data
*/
protected function page(string $view, array $data = []): ResponseInterface
{
return $this->html(
$this->view()->template(
'layouts.app',
$view,
$data,
),
);
}
}