Guten Tag,
ich habe eine Sammlung an Artikeln und möchte diese mit einer Art Paginierung ausgeben. Also erst 10 (von z.B. 50) Artikel und dann die Möglichkeit per Link /artikel?offset=10 weitere zehn per Ajax dazuladen. Dazu fange ich den Klick auf den Link per JavaScript ab und schicke einen entsprechenden AjaxRequest raus. Im Controller prüfe ich per Environment::get('isAjaxRequest') ob es sich um einen AjaxRequest oder eine normale HTTP-Anfrage mit Query-String (offset=10) handelt – ich möchte nämlich, dass die Seite auch bei deaktiviertem JavaScript funktioniert.
Nun stehe ich vor dem Problem, dass meine Methode getResponse in der Controller-Klasse eine Response als Rückgabewert verlangt (return $template->getResponse()) und ich nicht einfach ein JSON ausgeben kann (womit ich dann die geladenen Artikel an die bereits vorhandenen anhängen würde).
Wie kann ich mit dem gleichen Frontendmodul einmal ein angegebenes Template rendern lassen (normales Verhalten) oder (bei AjaxRequest) lediglich ein im Controller aufgebautes JSON?
Also in etwa:
PHP-Code:
class MyModuleController extends AbstractFrontendModuleController
{
protected function getResponse(Template $template, Request $request): Response
{
// do stuff
if (Environment::get('isAjaxRequest')) {
return $json;
}
return $template->getResponse(); // wird von mod_my_module.html5 verarbeitet
}
}
Danke für alle Hinweise!