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);
}
}