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