2016-09-16 3 views
1

Ich habe eine Flexform zum Textmedia Content Element hinzugefügt. Das funktioniert gut. Wie kann ich die Formulardaten in der Ansicht abrufen? Das Inhaltselement hat keinen Controller und die Variable {settings} enthält keine Flexform-Daten.Extbase CE - Get Flexform Daten

Ich bin glücklich für jede Hilfe.

Prost

Antwort

3

Sie können einfach eine Flexform XML-String in ein Array mit TYPO3 Core-API konvertieren:

$ffContent = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($xmlString); 

Dies wird die XML-Tag-Struktur auf ein Array nur konvertieren, die Sie mit einem hübschen Blättern komplexes Array zu iterieren.

Um eine vereinfachte Struktur, ohne alle die Flexform „aufblasen“ für Blätter zu bekommen, Lokalisierung usw. bietet Extbase seine eigene FlexformService:

$flexformService = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Service\FlexFormService'); 
$ffContent = $flexformService->convertFlexFormContentToArray($xmlString); 

Wenn Sie Inhalte von einer Lokalisierung benötigen, müssen Sie ein, weiterzureichen Wert für entweder $languagePointer (der zweite Parameter) oder $valuePointer (der dritte).

BEARBEITEN: Da Sie geschrieben haben, dass Sie keinen Controller zur Hand haben, um den Code oben in zu setzen, möchten Sie möglicherweise einen Ansichtshelfer dafür erstellen. Die Ansicht Helfer konnte das Ergebnis der Operation als separate Variablen zuweisen, die Sie

{namespace me=MyVendor\MyExtension\ViewHelpers} 
… 
<me:decodeFlexform value="{object.pi_flexform}" as="ffValues"> 
    {ffValues.myField} 
</me:decodeFlexform> 

Wahrscheinlich auch gibt es bereits eine in einer der verschiedenen View Helfer Sammlung Erweiterungen (vhs und Freunde) bereits zugreifen konnte.

2

Für ein Inhaltselement ist es wahrscheinlich einfach, einen Datenprozessor zu verwenden. Ich bin jetzt auf dem Handy und werde morgen Morgen Code für einen flexform dataProcessor hinzufügen.

+1

Danke, ich habe es jetzt mit einem Datenprozessor wie in diesem Beispiel gelöst: https://github.com/benjaminkott/bootstrap_package/blob/master/Classes/DataProcessing/FlexFormProcessor.php –

+0

Das ist eine gute Version! Viel Spass damit. –