Hallo Dieter,

vielen Dank für den entscheidenden Hinweis. Es hat zwar nicht sofort exakt
wie angegeben funktioniert, aber mich nach ein wenig Ausprobieren auf den
richtigen Weg gebracht.
Für alle, die dieses Problem haben hier die funktionierende Lösung:
name="ligagruppe[ligagruppespieltag][{spieltage.uid}][spieltageinzelergebnis
se][{res.uid}][spiel1]" (also ohne spieltage dazwischen).

Zu deiner Frage:
Die Extension besteht nur aus einer list-Action und einer
edit-/update-Action. Die list-action zeigt die Ergebnisse und alle weiteren
Infos (Ligagruppen-Infos und Spieltag-Infos) auf der Website an, das
Edit-Formular ist nur für eingeloggte Frontend-User der eigenen Ligagruppe
zugänglich. Eine Seite hat immer nur einen Hauptdatensatz ligagruppe, der
dort angezeigt wird. Das Edit-Formular dazu liegt jeweils auf einer eigenen
Seite, die als Datensatzsammlung die Seite mit der List-Action hat (dafür
$this->ligagruppeRepository->findOneByPid($this->configurationManager->getCo
ntentObject()->data['pages'] in der Update-Action, damit sofort das passende
Formular erscheint, ohne dass man sich erst über eine List-Seite
durchklicken muss). 
Create und Delete werden nur über das Backend durchgeführt. Die Datensätze
werden initial von einem Admin mit Nullwerten für die Ergebnisse und allen
statischen Informationen angelegt. Ein Spieltag wir in der List-Action erst
angezeigt, wenn Ergebnisse größer 0 vorhanden sind, also von einem User
geändert wurden. Auf diesem Weg ist es für die Frontend-User ganz einfach
möglich "mal eben" die Ergebnisse zu erfassen. Damit das ganze so einfach
wie möglich bleibt, die Idee, alles in ein Formular zu packen. 

Beste Grüße
Stefan




-----Ursprüngliche Nachricht-----
Von: typo3-german-boun...@lists.typo3.org
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Dr. Dieter
Porth
Gesendet: Dienstag, 17. Januar 2017 07:22
An: German TYPO3 Userlist <typo3-german@lists.typo3.org>
Betreff: Re: [TYPO3-german] Edit-Formular mit verschachtelten Objekten auf 3
Ebenen

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[spieltageinze
lergebnisse][{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(spieltageinz
> elerge
> 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

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

Antwort per Email an