LEMONADE Dokumentace

Dokumentace.

Patnáct kapitol od instalace a struktury projektu po CLI a produkční nasazení.

Kapitola 6 z 15

Views a layouty.

Renderujte PHP šablony se zřetelnými daty, společným layoutem a bezpečným escapováním.

Renderování z controlleru

Injektovaný ViewRendererInterface je requestově scoped. Metoda render() vrací response; content() vrací string pro další skládání.

Controller
<?php

use Lemonade\Framework\View\ViewRendererInterface;
use Psr\Http\Message\ResponseInterface;

final readonly class ArticleController
{
    public function __construct(
        private ViewRendererInterface $views,
        private ArticleRepository $articles,
    ) {}

    public function detail(string $id): ResponseInterface
    {
        return $this->views->render('articles.detail', [
            'article' => $this->articles->get($id),
        ]);
    }
}

Název articles.detail se mapuje na odpovídající PHP view podle nakonfigurovaných view resources.

Šablona a helpery

Do view předávejte jen data, která potřebuje. Dynamický text escapujte. Pro URL, překlady, assety a CSRF používejte delegované metody na $this; requestová data poskytuje $requestHelpers.

app/Views/articles/detail.php
<?php /** @var array{id:string,title:string,body:string} $article */ ?>

<article>
    <h1><?= e($article['title']) ?></h1>
    <p><?= e($article['body']) ?></p>
</article>

Layout, partialy a sekce zůstávají dostupné přes objekt view v $this.

Podrobná technická dokumentace na GitHubu