Response-Eigenschaften im Zikula Theme-Layer anpassen

in  Zikula Apps , ,

Response-Eigenschaften im Zikula Theme-Layer anpassen

In Zikula gibt es eine Besonderheit zu beachten, welche Einfluss darauf nimmt, wie die aus einem Request resultierende Response zum anfragenden Client gelangt.

Per Standard wird die Response in Symfony im Rahmen einer Controller-Aktion erstellt und zurückgeliefert. Gegebenfalls wird die Response noch von einem oder mehreren Event Subscribern verändert.

Bei Zikula wird noch eine Theme-Schicht dazwischen geschaltet, welche den Inhalt der Response in eine neue Response überführt, um den Layout-Rahmen sowie damit einhergehende, zusätzliche Blöcke usw. zu rendern.

Möchte man also die finale Response beeinflussen, ist das Theme der entsprechende Ansatzpunkt. Eine einfache Möglichkeit liegt in der Methode generateThemedResponse der AbstractTheme-Oberklasse, welche erweitert werden kann.

Zur Illustration hier ein kleines Beispiel, das einfach ein paar Cache-Header hinzufügt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

namespace Acme\SomeTheme;

use Symfony\Component\HttpFoundation\Response;
use Zikula\ThemeModule\AbstractTheme;

class AcmeSomeTheme extends AbstractTheme
{
    public function generateThemedResponse($realm, Response $response, $moduleName = null)
    {
        $response = parent::generateThemedResponse($realm, $response, $moduleName);

        $date = new \DateTime();
        $date->modify('+30 days');
        $response->setExpires($date);

        $response->setPublic();
        $response->setMaxAge(600);

        // die('Test: ' . print_r($response->headers));

        return $response;
    }
}

Natürlich kann man alternativ auch im Theme einen Event Subscriber implementieren. Manchmal ist aber der direkte Weg einfacher 😄

Weitere Beiträge in Kategorie Zikula Apps

Symfony Messenger - Behandlung erneut fehlgeschlagener Nachrichten
- Im Symfony Messenger gibt die Möglichkeit, fehlgeschlagene Nachrichten an eine failed queue zu leiten. In diesem Sammelbecken können diese dann inspiziert und nach Korrektur des zu Grunde liegenden …
Tabellennamen mit Doctrine dynamisch anpassen
- Mit Hilfe der Metadaten von Doctrine lassen sich jegliche Daten zu einer Entität zur Laufzeit verändern. Allerdings kann das in manchen Anwendungsfällen fortwährend notwendig sein, zum Beispiel in …
Kommende Neuerungen in Symfony 5.2
- Vor zwei Tagen wurde Symfony 5.2.0-BETA2 veröffentlicht. Dies nehme ich zum Anlass, um einmal einen Überblick über die wichtigsten neuen Funktionen zu geben, auf die wir uns im Rahmen dieses Updates …
Zikula Core 3.0.3 mit Sicherheits-Update von Symfony 5
- Vor kurzem hatten wir über das Release von Zikula 3.0.1 berichtet, welches wichtige Korrekturen für Zikula 3 bereitgestellt hat. Vor einer Woche wurde die nächste Version 3.0.2 veröffentlicht. …
Symfony Services asynchron im Hintergrund aufrufen
- Oftmals greift man in Symfony-Projekten auf CLI-Kommandos mit Hilfe der Symfony Console-Komponente zurück, um länger laufende Prozesse außerhalb des Webservers durchzuführen. In komplexeren Vorhaben …