← Code-Übersicht

DokuListeAction.php

Pfad: src/Infrastructure/Http/DokuListeAction.php

Ext: php

Größe: 1438 Bytes

Geändert: 2026-07-15 21:49:43+02

<?php
declare(strict_types=1);

namespace Demo\Infrastructure\Http;

use Demo\Application\Dokumentation\ListeDokumentation;

/**
 * Treibender Adapter: rendert die Uebersicht /doku (sortier-/filterbare Tabelle).
 */
final class DokuListeAction
{
    /** @var ListeDokumentation Anwendungsfall. */
    private ListeDokumentation $liste;

    /** @var TemplateRenderer Template-Renderer. */
    private TemplateRenderer $view;

    /** @var Navigation Hauptnavigation. */
    private Navigation $nav;

    /**
     * @param ListeDokumentation $liste Anwendungsfall.
     * @param TemplateRenderer   $view  Renderer.
     * @param Navigation         $nav   Navigation.
     */
    public function __construct(ListeDokumentation $liste, TemplateRenderer $view, Navigation $nav)
    {
        $this->liste = $liste;
        $this->view = $view;
        $this->nav = $nav;
    }

    /**
     * Baut die Uebersichtsseite.
     *
     * @param array<string,string> $params Routen-Parameter (ungenutzt).
     * @return Response HTML-Antwort.
     */
    public function __invoke(array $params): Response
    {
        $html = $this->view->render('layout', [
            'inner' => 'doku-liste',
            'titel' => 'Dokumentation',
            'aktiv' => '/doku',
            'nav' => $this->nav->items(),
            'docs' => $this->liste->execute(),
        ]);

        return new Response(200, 'text/html; charset=UTF-8', $html);
    }
}