Hallo Swen,

ersteinmal: eine coole Idee; denn ein Formular für IRRE-Elemente erstellt der Extensionbuilder meines Wissens nicht.

Ich habe für das Frontend-Editing einen etwas anderen Wege gewählt. In deine Richtung hätte ich auch nie gedacht, obwohl sie naheliegend ist.

Idee: in der oberen Schleife benutzt du die Uid der Spieltage. Die solltest du auch in der Inneren Schleife verwenden. Woher soll Extbase sonst wissen, wohin die Daten einzuordnen sind.

Statt

name="spieltage[spieltageinzelergebnisse][{res.uid}][spiel1]"
vielleicht
name="ligagruppe[ligagruppespieltag][{spieltage.uid}]spieltage[spieltageinzelergebnisse][{res.uid}][spiel1]"


Wie machst du es mit Create und Delete für die IRRE-Elemente im Frontend? Ich nutze dafür einen Dummy-Generator (Repository->getDummy();) im Repository? Gehst du einen ähnlich-Weg?

Mit besten Grüßen
     Dieter Porth

Am 16.01.2017 um 21:19 schrieb Stefan Thuis:
Hallo,

ich habe in Typo3 7.6 mit dem Extension Builder eine eigene Extension
erstellt mit mehreren verschachtelten Objekten. Diese möchte ich jetzt in
einem einzigen Edit-Formular bearbeiten. Alle Objekte sind entsprechend
miteinander verknüpft.

Die Struktur sieht folgendermaßen aus:

ligagruppe----1:n(ligagruppespieltag)---->spieltag----1:n(spieltageinzelerge
bnisse)---->einzelergebnisse

Mein Fluid-Template sieht so aus (auf die relevanten Punkte gekürzt):

<f:form action="update" name="ligagruppe" object="{ligagruppe}" >
<f:for each="{ligagruppe.ligagruppespieltag}" as="spieltage">
     <label>Spielort</label>
     <f:form.textfield
name="ligagruppe[ligagruppespieltag][{spieltage.uid}][spielort]"
value="{spieltage.spielort}" />
     <f:form.hidden
name="ligagruppe[ligagruppespieltag][{spieltage.uid}][__identity]"
value="{spieltage.uid}" /><br />
     <f:for each="{spieltage.spieltageinzelergebnisse}" as="res">
         <label>Spiel 1</label>
         <f:form.textfield
name="spieltage[spieltageinzelergebnisse][{res.uid}][spiel1]"
value="{res.spiel1}" />
         <f:form.hidden
name="spieltage[spieltageinzelergebnisse][{res.uid}][__identity]"
value="{res.uid}" /><br />
     </f:for>
</f:for>
<f:form.submit value="Save" />

</f:form>

Wenn ich das Formular aufrufe, werden die vorhandenen Werte korrekt gesetzt.
Das Ändern funktioniert für alles auf der obersten Ebene (ligagruppe) und
auf der zweiten Ebene (spieltag), aber auf der dritten Ebene
(einzelergebnisse) werden die Werte nicht aktualisiert.

Ich habe schon verschiedene Kombinationen für

<f:form.textfield
name="spieltage[spieltageinzelergebnisse][{res.uid}][spiel1]"

und

<f:form.hidden
name="spieltage[spieltageinzelergebnisse][{res.uid}][__identity]"
value="{res.uid}" /><br />

ausprobiert, aber es funktioniert nicht.

Die edit- und update-Actions sehen so aus:

     /**

      * action edit

      *

      * @param \BCDU\Leagueresults\Domain\Model\Ligagruppe $ligagruppe

      * @ignorevalidation $ligagruppe

      * @return void

      */

     public function editAction(\BCDU\Leagueresults\Domain\Model\Ligagruppe
$ligagruppe = NULL)

     {

                                $ligagruppe =
$this->ligagruppeRepository->findOneByPid($this->configurationManager->getCo
ntentObject()->data['pages']);

                                $this->view->assign('ligagruppe',
$ligagruppe);

     }

     /**

      * action update

      *

      * @param \BCDU\Leagueresults\Domain\Model\Ligagruppe $ligagruppe

      * @return void

      */

     public function updateAction(\BCDU\Leagueresults\Domain\Model\Ligagruppe
$ligagruppe)

     {

         $this->addFlashMessage('Die Änderungen wurden gespeichert',
'Herzlichen Glückwunsch!', \TYPO3\CMS\Core\Messaging\AbstractMessage::OK);

         $this->ligagruppeRepository->update($ligagruppe);

         $this->redirect('edit');

     }

Wie muss das korrekte name-Attribut hier lauten, damit die Werte
aktualisiert werden? Oder übersehe ich hier etwas und muss im Controller
noch etwas ergänzen?

Habe schon überall gesucht und kann leider nichts dazu finden.

Danke für jeden Tipp

Stefan

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an