Symfony 4 - Parameter für Html-Frontend-Module
Moin,
ich hoffe ich bin hier in der richtigen Kategorie mit meiner Frage gelandet.
Mir kam die Frage, ob es bzw. wie es möglich ist Parameter an ein Frontend-Modul zu übergeben?
Konkret habe ich mir ein Frontend-Modul nach dieser offiziellen Anleitung gebaut:
https://docs.contao.org/dev/framewor...t-end-modules/.
Das funktioniert soweit wunderbar, ich habe mein Template und ich kann Daten aus der Datenbank über meinen Symfony-Controller dort mit einfließen lassen:)
Im Contao-Backend kann ich das Modul in meinem Theme einbauen und als Modul in einen Artikel einbinden, soweit so gut.
Ebenso kann ich das Template per file-insert-tag einbinden. Normalerweise könnte ich per file-insert-tag ja auch Query-Parameter mit anhängen, so z.B.:
Code:
{{file::mod_some_example3.php?arg1=val}}
Hier handelt es sich aber um kein php-file, sondern um ein html5-Template (siehe Anleitung), wo ich eigentlich keine Parameter mitgeben kann.
Wenn ich das Template zu einem php-file mache, komme ich zwar in meinem Controller an, sehe aber keine Parameter in meinem Request-Object und Contao / Symfony
meckert, dass er mein Template nicht findet, weil vermutlich nach einem html5-Template gesucht wird. Da ich ein Request-Object in meinem Controller habe,
würde ich annehmen, dass ich hier auch Parameter übergeben kann und im PHP-Code entsprechend nutzen kann.
Hat hier vielleicht Jemand eine Lösung hier für?
Zweck des ganzen soll es sein, Frontend-Module mit Parametern zu versehen, so dass ich im Controller bestimmen kann, welche Daten ins Template gerendert werden sollen.
Als simples, fiktives Beispiel: Ich möchte Personen (Daten aus der Db) in meinem Template anzeigen, aber nur die mit Nachnamen "A-L".
Wenn ich nun die Personen "N-Z" ausgeben möchte, würde ich das gerne per Parameter machen, anstatt für diese Personen ein weiteres Modul / Template anzulegen.
Liste der Anhänge anzeigen (Anzahl: 1)
Sobald ich dieses Template einbinde per Insert-Tag, lande ich doch im Backend in meinem Controller meines Frontend-Moduls...
Aber unabhängig von den Contao-Termini funktioniert es nicht.
Anhang 24021
Ich habe mein Template in einem Artikel als File-Insert-Tag und einmal als Modul eingebunden.
Beim File-Insert-Tag gebe ich Parameter mit, die kommen aber im Controller vom Frontend-Modul-Controller nicht an.
Bei der zweiten Variante, die ich als Modul eingebunden habe, wüsste ich nicht mal wie ich Parameter mitgebe (weswegen ich mich erstmal auf das File-Insert-Tag konzentriert habe).
So sieht mein Frontend-Module-Controller aus:
PHP-Code:
namespace App\Controller\FrontendModule;
use Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
use Contao\CoreBundle\ServiceAnnotation\FrontendModule;
use Contao\ModuleModel;
use Contao\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* @FrontendModule("my_example",
* category="miscellaneous",
* template="mod_some_example3",
* renderer="forward"
* )
*/
class ExampleController extends AbstractFrontendModuleController
{
protected function getResponse(Template $template, ModuleModel $model, Request $request): ?Response
{
$em = $this->getDoctrine()->getManager();
return $template->getResponse();
}
}
Im Request-Objekt ist leider kein Parameter zu sehen, was mache ich hier falsch?!?!?