Hallo Contao Community,
bei der Entwicklung eines Frontend Moduls, welches eine Liste von Einträgen aus der Datenbank anzeigt, komme ich nicht mehr weiter.
Erstmal zur Ausgangslage:
Ich habe einen funktionierenden Controller für das Modul geschrieben, dieser nimmt alle Eintrage aus dem über die Modul Einstellungen definierten Archiv und geht diese durch.
Über einen weiteren "Controller" (der aber eigentlich keiner ist, ich habe ihn nur so benannt gehabt) wird nach alter Contao 3.x manier mit compile aus dem übergebenen Template html erzeugt.
Der nachfolgende Code ist teilweise gekürzt/angepasst, also nicht über nichtssagende Variablen Namen wundern.
Der List Modul Controller:
PHP-Code:
class ListModuleController extends AbstractFrontendModuleController {
protected function getResponse(Template $template, ModuleModel $model, Request $request): ?Response {
$types = TypeModel::findBy('pid', $model->archive);
$arrTypes = array();
$typeModuleController = new TypeModuleController();
foreach ($types as $type) {
$type_template = new FrontendTemplate();
$type_template->setName($model->type_template);
$arrTypes[] = $TypeModuleController->compile($type_template, $type);
}
$template->types = $arrTypes;
return $template->getResponse();
}
}
Der Type "Controller":
PHP-Code:
class TypeModuleController extends Frontend {
public function compile(Template $template, Model $model): string {
$template->setData($model->row());
return $template->parse();
}
}
List Template:
HTML-Code:
<?php $this->extend('block_searchable'); ?>
<?php $this->block('content'); ?>
<?php foreach($this->types as $type): ?>
<?=$type ?>
<?php endforeach; ?>
<?php $this->endblock(); ?>
Nun würde ich gerne auch für die einzelnen Typ Blöcke auch einen FragmentController nutzen um
Sure one could simply create a module the old way, but this limits functionality and is not recommended anymore.
Contao Developer Documentation Fragments
gerecht zu werden.
Leider nutzen die Contao-Core Erweiterungen, die ich mir angeschaut habe meist noch nicht die neuen AbstractFrontendModuleController, sodass ich mir nicht einfach dort eine Liste anschauen konnte.
Hoffe mir kann hier jemand etwas weiter helfen, wie ich an dieser Stelle die Fragments/Sub Requests einsetzen muss, damit ich diese möglichst effizient einsetzen kann.
Mit freundlichen Grüßen
Markus
Lesezeichen