CMS_PIFAFORM generateViewCode()
Verfasst: Di 31. Mai 2022, 14:31
Hallo,
ich arbeite in einem Modul mit der dynamische Erzeugung von CMS_TYPEs mittels der cTypeGenerator-Klasse und der Funktion getGeneratedCmsTag.
Bei den Standard-Typen wie CMS_HTML, CMS_TEXT usw. funktioniert es tadelslos. Ich stoße jedoch beim PIFA-Plugin bzw. beim Type CMS_PIFAFORM an grenzen. Der Code wird nicht korrekt erzeugt sondern gibt wiederum einen PHP-Teil zurück, der ein anscheinend einen echo-Befehl ändert etwas ausführt und dann wieder PHP Echo aufruft. Das funktioniert dann nur, wenn der Code mit eval ausgeführt würde. Mit der Verwendung innerhalb von Variablen ist dann Schluss.
Ich habe mich dann bis zur Datei plugins/form_assistant/classes/class.content.type.pifa_form.php durchgearbeitet und dort die generateViewCode()-Funktion gefunden.
Diese erzeugt oben beschriebene Ausgabe/Verhaltensweise.
Andere CMS_Typen verwenden einen etwas anderen Code. Ich habe obige Zeilen in folgendes abgeändert:
Dies scheint bisher zu funktionieren. In der Funktionsbeschreibung steht, dass der Code gecached wird. Meine Frage in die Runde, gibt es mit der abgeänderten Variante Probleme beim Caching, da ich hier noch nicht ganz durchgestiegen bin? Oder kann ich entsprechende Funktionsänderung so belassen? Gibt es Gründe, warum der PHP-Befehlssatz so verwendet wurde, wie er verwendet wurde?
Christian
ich arbeite in einem Modul mit der dynamische Erzeugung von CMS_TYPEs mittels der cTypeGenerator-Klasse und der Funktion getGeneratedCmsTag.
Bei den Standard-Typen wie CMS_HTML, CMS_TEXT usw. funktioniert es tadelslos. Ich stoße jedoch beim PIFA-Plugin bzw. beim Type CMS_PIFAFORM an grenzen. Der Code wird nicht korrekt erzeugt sondern gibt wiederum einen PHP-Teil zurück, der ein anscheinend einen echo-Befehl ändert etwas ausführt und dann wieder PHP Echo aufruft. Das funktioniert dann nur, wenn der Code mit eval ausgeführt würde. Mit der Verwendung innerhalb von Variablen ist dann Schluss.
Ich habe mich dann bis zur Datei plugins/form_assistant/classes/class.content.type.pifa_form.php durchgearbeitet und dort die generateViewCode()-Funktion gefunden.
Code: Alles auswählen
$code = '";?' . '><' . '?php $form = new %s(\'%s\', %s, %s); echo $form->buildCode(); ?' . '><' . '?php echo "';
$code = sprintf($code, get_class($this), $this->_rawSettings, $this->_id, '[]');
return $code;
Andere CMS_Typen verwenden einen etwas anderen Code. Ich habe obige Zeilen in folgendes abgeändert:
Code: Alles auswählen
$classObject = get_class($this);
$form = new $classObject($this->_rawSettings, $this->_id, []);
return $form->buildCode();
Christian