[TYPO3-german] Edit-Formular mit verschachtelten Objekten auf 3 Ebenen
Dr. Dieter Porth
typo3 at mobger.de
Tue Jan 17 07:21:53 CET 2017
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 at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
More information about the TYPO3-german
mailing list