Extbase und Flexform [Gelöst]

  • timo_s timo_s
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    14. 12. 2009, 18:19

    Hallo.

    Ich versuche gerade eine Extension mit extbase zu programmieren, leider wird die flexform.xml erfolgreich ignoriert.

    In der ext_tables.php melde ich sowohl das Plugin als auch die flexform.xml an.

    1. // Plugin anmelden
    2. Tx_Extbase_Utility_Extension::registerPlugin(
    3. $_EXTKEY, // The name of the extension in UpperCamelCase
    4. 'Pi1', // A unique name of the plugin in UpperCamelCase
    5. 'MyExtension' // A title shown in the backend dropdown field
    6. );
    7.  
    8. $extensionName = t3lib_div::underscoredToUpperCamelCase($_EXTKEY);
    9. $pluginSignature = strtolower($extensionName) . '_pi1';
    10. $TCA['tt_content']['types']['list']['subtypes_excludelist'][$pluginSignature] = 'layout,select_key,recursive';
    11.  
    12. // Flexform
    13. $TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
    14. t3lib_extMgm::addPiFlexFormValue($pluginSignature, 'FILE:EXT:'.$_EXTKEY.'/Configuration/FlexForms/flexform.xml');

    Die Datei flexform.xml ist natürlich vorhanden und darf gelesen/ausgeführt werden.

    In der entsprechenden Action des Controllers kann ich mittels '$this->settings' auf die 'settings' aus derm TypoScript zugreifen.
    Wie bekomme ich nun die Daten aus dem Flexform in die Action des Controllers?

    Über produktive Vorschläge wäre ich sehr dankbar, denn Onkel Google hat mir bis dato nicht weiterhelfen können.

    Danke


  • 1
  • manuelstofer manuelsto...
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    20. 12. 2009, 17:39

    Würde mich auch sehr interessieren, habs auch nicht rausgefunden.

    Hatte bei der Extension blog_example nachgeschaut. Dort wird jedoch auch versucht über $this->settings auf die Flexform Werte zuzugreifen, was zu einem Fehler führt.

    Handelt es sich um einen Fehler im extbase framework?

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    21. 12. 2009, 16:15

    Extbase (Configuration): Made it possible to override controller and action from FlexForm by defining a FlexForm field "switchableControllerActions" which is a semicolon-separated list of Controller->Action combinations. Also, all flexform values are merged on top of the framework configuration. This change is not backwards-compatible in case you used FlexForm settings. Before this change, a flexform setting "foo" has been merged onto "settings.foo". Now, the flexform setting needs to be called "settings.foo" to be merged correctly into the settings (note the prefixing). This enables to override ALL TypoScript configuration from FlexForms, not just extension specific settings.

    Also alle Felder in der Flexform mit settings.xyz benennen

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    06. 07. 2010, 13:17

    @Steffen: Das ist das was Daniel hier schreibt:
    http://www.npostnik.de/typo3/extbase-controlleraction-per-flexform-konfigurierbar-machen/

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • afoeder afoeder
    Padawan
    0 x
    58 Beiträge
    1 Hilfreiche Beiträge
    14. 07. 2010, 19:36

    @einpraegsam: nicht ganz; und aufgrund Deines Eintrags habe ich meine gesuchte Information überlesen ;)

    Daniel @ npostnik.de schreib lediglich, dass mittels "switchableControllerActions" der Standard- bzw. die erlaubten Controller per FF konfigurierbar gemacht werden können; das interessante, was Steffen jedoch zitiert hat und meint, ist:

    wenn im FlexForm die Felder mit setting.myFieldName benannt werden, dann sind sie im Controller mittels (array)$this->settings ebenfalls zugreifbar.
    Sonst ist lediglich das, was im TS unter plugin.tx_myExtname.settings { } definiert ist, aus dieser Variable lesbar.

    Perfekt, genau was ich gesucht habe! Danke :)

    Das ist im blog_example nicht korrekt gepflegt, da gibt's zwar ein FlexForm, aber nicht mit der setting....-Variante...

    Beste Grüße!
    Adrian

    meine Flow-Kenntnis verdanke ich der täglichen Arbeit an https://www.wishbase.com - der Crowdfunding-Plattform für Wünsche, und der großartigen community im IRC-Channel #typo3-flow.

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    15. 07. 2010, 11:08

    Thx ich habe wieder nur mit einem Auge gelesen...

    Beispiel Flexform von wt_twitter:
    [html]<T3DataStructure>
    <meta>
    <langDisable>1</langDisable>
    </meta>
    <sheets>
    <main>
    <ROOT>
    <TCEforms>
    <sheetTitle>LLL:EXT:wt_twitter/Resources/Private/Language/locallang_db.xml:pi_flexform.sheet_main</sheetTitle>
    </TCEforms>
    <type>array</type>
    <el>
    <settings.flexform.account>
    <TCEforms>
    <exclude>1</exclude>
    <label>LLL:EXT:wt_twitter/Resources/Private/Language/locallang_db.xml:pi_flexform.account</label>
    <config>
    <type>input</type>
    <size>20</size>
    </config>
    </TCEforms>
    </settings.flexform.account>
    </el>
    </ROOT>
    </main>
    </sheets>
    </T3DataStructure>
    [/html]

    1. $account = $this->settings['flexform']['account'];

    Eine Hilfsfunktion in Classes/Utility/ schraubt bei mir die Flexform und TypoScript Werte zusammen - vielleicht kann es jemand brauchen:

    1. public static function mergeTypoScript2FlexForm(&$settings) {
    2. $tmp_settings = array();
    3.  
    4. if (isset($settings['setup']) && is_array($settings['setup'])) {
    5. $tmp_settings = $settings['setup']; // copy typoscript part to conf part
    6. }
    7.  
    8. if (isset($settings['flexform']) && is_array($settings['flexform'])) {
    9. $tmp_settings = array_merge((array) $tmp_settings, (array) $settings['flexform']); // copy flexform part to conf part
    10. }
    11.  
    12. $settings = $tmp_settings;
    13. }

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • 1