Formhandler in eigener Extension verwenden
#Code

Formhandler in eigener Extension verwenden

Formhandler ist eine der großen TYPO3 Extensions, mit der Jeder früher oder später zu tun hat. Das Repertoire Formhandlers reicht beinahe in das Unendliche. Mit einem steigenden Funktionsumfang steigt die Komplexität der Einrichtung, so dass es teilweise schwer sein kann die Extension richtig zu konfigurieren. Einen Schritt über die korrekte Konfiguration hinaus, ist ein Formhandler-Formular in eine eigene Extension einzubauen.

Was nur Wenige wissen: schwer ist es nicht, nur ist der Lösungsweg nicht immer leicht zu finden.

Vorgehensweise

Zunächst benötigen wir eine Kopie der Formhandler-Konfiguration, die wir nach unseren Wünschen ändern können:

Configuration/TypoScript/setup.txt

 

plugin.tx_myext.formhandler < plugin.Tx_Formhandler
plugin.tx_myext.formhandler.settings {
  templateFile = EXT:myext/Resources/Private/Templates/Formhandler/AwesomeForm.html
}

 

In dem Controller muss daraufhin Formhandler eingebunden und eine neue Instanz erzeugt werden.

Classes/Controller/MyAwesomeController.php

 

// Formhandler einbinden
require_once(\t3lib_extMgm::extPath('formhandler') . 'pi1/class.tx_formhandler_pi1.php');

// Neue Instanz erzeugen
$formhandler = new \tx_formhandler_pi1();

// Dem Formhandler ein cObj geben
$formhandler->cObj = \t3lib_div::makeInstance('tslib_cObj');

// Die TypoScript Konfiguration abrufen
// Dabei zu beachten: die Punkte am Ende der Keys
$config = $GLOBALS["TSFE"]->tmpl->setup['plugin.']['tx_myext.']['formhandler.'];

// Rendern des Forumlars
$form = $formhandler->main('myAwesomeForm', $config);
unset($config, $formhandler);

// Die gerenderte Form an das Template übergeben
$this->view->assign('form', $form);

 

Nun ist das gewünschte Formhandler-Formular in dem Template verfügbar. Zu beachten: Die Variable {form} enthält HTML-Code. Um Diesen im Front-end auszugeben sollte verwendet werden:

Resources/Private/Templates/Awesomeness/MyAwesomeTemplate.html

 

<f:format.raw>{form}</f:format.raw>