← Code-Übersicht

DokuSpeichernAction.php

Pfad: src/Infrastructure/Http/DokuSpeichernAction.php

Ext: php

Größe: 1059 Bytes

Geändert: 2026-07-15T21:49:48+02:00

Frühere Version vom 2026-07-15T21:49:48+02:00 · zur aktuellen Fassung

<?php
declare(strict_types=1);

namespace Demo\Infrastructure\Http;

use Demo\Application\Dokumentation\SpeichereInhalt;

/**
 * Treibender Adapter: nimmt den POST des Editors entgegen und speichert (PRG).
 */
final class DokuSpeichernAction
{
    /** @var SpeichereInhalt Anwendungsfall. */
    private SpeichereInhalt $speichere;

    /**
     * @param SpeichereInhalt $speichere Anwendungsfall.
     */
    public function __construct(SpeichereInhalt $speichere)
    {
        $this->speichere = $speichere;
    }

    /**
     * Speichert den eingereichten Inhalt und leitet zur Detailseite zurueck.
     *
     * @param array<string,string> $params Routen-Parameter (slug).
     * @return Response Weiterleitung auf die Detailseite.
     */
    public function __invoke(array $params): Response
    {
        $slug = $params['slug'] ?? '';
        $editorHtml = is_string($_POST['inhalt'] ?? null) ? $_POST['inhalt'] : '';
        $this->speichere->execute($slug, $editorHtml);

        return Response::redirect('/doku/' . rawurlencode($slug));
    }
}