[Frage] Storage-PID in Flexform TYPO3-Version: 9.5.27

  • s_reinecke s_reineck...
    Padawan
    0 x
    35 Beiträge
    1 Hilfreiche Beiträge
    30. 06. 2021, 12:29

    Hallo!

    Ich habe eine kleine Extension (Kontaktperson) erstellt, die ich in verschiedenen Sites nutzen möchte, jede Site mit einem eigenen Daten-Container.

    Über eine Flexform wird die Auswahl einzelner Personen getätigt, was an sich auch funktioniert, nur werden immer alle Datensätze zur Auswahl angeboten.

    Probiert habe ich dann, in der pageTS die PID des Daten-Containers anzugeben und dann in der Flexform auszulesen.

    Die Flexform sieht so aus (nur der relevante Teil):
    [code]<settings.person>
    <TCEforms>
    <label>Person</label>
    <config>
    <type>select</type>
    <foreign_table>tx_contactperson_domain_model_persons</foreign_table>
    <foreign_table_where>
    AND tx_contactperson_domain_model_persons.pid = ###PAGE_TSCONFIG_ID###
    </foreign_table_where>
    <size>5</size>
    <minitems>0</minitems>
    <maxitems>99</maxitems>
    </config>
    </TCEforms>
    </settings.person>
    [/code]

    Wenn ich hier die PID händisch statt mit Marker setze, funktioniert das auch. Nur der Marker will nicht funktionieren. Ich habe schon alle möglichen Schreibweisen durch, hier eine Auswahl meiner Versuche:
    [code]TCEFORM.tx_contactperson_person.pid.PAGE_TSCONFIG_ID = 153

    TCEFORM.tx_contactperson_person.pi_flexform.sDEF.settings\.person.PAGE_TSCONFIG_ID = 153

    TCEFORM.tt_content.pi_flexform.tx_contactperson_person.sDEF.settings\.person.PAGE_TSCONFIG_ID = 153

    TCEFORM.tx_contactperson_person.sDEF.settings\.person.PAGE_TSCONFIG_ID = 153

    TCEFORM.tx_contactperson_person.pi_flexform.T3DataStructure.sheets.settings\.person.PAGE_TSCONFIG_ID = 153
    [/code]

    Weiß jemand, ob das überhaupt geht und wenn ja, wie?

    Danke und Grüße,
    Stephan


  • 1
  • Teisinger Teisinger
    Jedi-Ratsmitglied
    0 x
    502 Beiträge
    37 Hilfreiche Beiträge
    30. 06. 2021, 14:53

    Du könntest (was ich schöner fände - aber nicht getestet :) ) - zwei Felder in der Flexform haben:
    Feld 1: Auswahl des Containers
    Feld 2: Auswahl des Datensatzes des ausgewählten Containers
    a) nur Anzeigen wenn Feld 1 ausgewählt ist Stichwort "displayCond"
    b) Stichwort "userFunc" das Feld damit erstellen, da du glaube ich nur so auf den Wert des Feldes 1 zugreifen und die Ausgabe entsprechend machen kannst.

    Das wäre etwas flexibler und benötigt keine statischen Werte in TypoScript bzw. PageTs...

    https://github.com/groundstack-org

  • s_reinecke s_reineck...
    Padawan
    0 x
    35 Beiträge
    1 Hilfreiche Beiträge
    30. 06. 2021, 16:41

    Das klingt interessant, danke dir! Das werde ich mal probieren.

    Wobei ich trotzdem noch gerne wissen würde, warum meine Variante nicht funktioniert, bzw. ob es überhaupt funktionieren würde.

  • 0 x
    3252 Beiträge
    152 Hilfreiche Beiträge
    30. 06. 2021, 21:27

    War interessiert, wurde aber auch nicht ganz fündig...
    Stefan schreibt aber als Beispiel:

    Hier ein Beispiel, wenn der Wert für einen Marker in der Plugin-Flexform sein soll:

    TCEFORM.tt_content.pi_flexform.PAGE_TSCONFIG_ID = 22

    (https://www.typo3lexikon.de/typo3-tutorials/core/tca/marker-in-flexforms.html)

    Vielleicht muss da etwas um die Ecke gedacht werden, und der Wert für tt_content gesetzt werden, weil das FlexForm-XML ja in der tt_content-Tabelle ist...

  • s_reinecke s_reineck...
    Padawan
    0 x
    35 Beiträge
    1 Hilfreiche Beiträge
    01. 07. 2021, 07:59

    Auf der Seite war ich natürlich auch schon. :-)
    Die Variante hatte ich dementsprechend auch probiert, leider ohne Erfolg.

    Ich versuche dann mal die Variante von Teisinger.

    Danke euch beiden!

    #Edit#
    Das scheint ein Bug zu sein:
    https://forge.typo3.org/issues/73209

  • s_reinecke s_reineck...
    Padawan
    0 x
    35 Beiträge
    1 Hilfreiche Beiträge
    07. 07. 2021, 09:55

    Mit "displayCond" bin ich jetzt auch nicht weitergekommen. Prinzipiell funktioniert das schon, aber leider greift diese Condition nur beim Speichern und nicht beim Auswählen eines Wertes. Das finde ich für Redakteure zu umständlich, daher werde ich das auch nicht weiter verfolgen.

  • 0 x
    3252 Beiträge
    152 Hilfreiche Beiträge
    07. 07. 2021, 13:43

    `displayCond` funktionieren nur, wenn serverseitig die Prüfung erfolgen kann. Dies ist entweder beim gezielten Speichern der Fall, oder bei einem erzwungenen Reload beim Ändern eines entsprechenden Feldes (aus der Bedingung).
    https://docs.typo3.org/m/typo3/reference-tca/master/en-us/Columns/Properties/OnChange.html

  • s_reinecke s_reineck...
    Padawan
    0 x
    35 Beiträge
    1 Hilfreiche Beiträge
    08. 07. 2021, 07:52

    Ja, das onchange/reload hatte ich auch schon ausprobiert, leider an der falschen Stelle. Jetzt habe ich es außerhalb von config gesetzt und nun geht es. Damit kann ich jetzt weiter arbeiten. :-)

  • Teisinger Teisinger
    Jedi-Ratsmitglied
    0 x
    502 Beiträge
    37 Hilfreiche Beiträge
    08. 07. 2021, 13:47

    Du könntest auch mit JavaScript im Backend arbeiten um Felder ein- und aus zu blenden, dann umgehst du das ganze reload gedöns (warum ist das eigentlich noch drin in TYPO3? oO).

    https://github.com/groundstack-org

  • 1