[TYPO3-german] Edit-Formular mit verschachtelten Objekten auf 3 Ebenen
Stefan Thuis
st at bcdu.de
Mon Jan 16 21:19:45 CET 2017
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
More information about the TYPO3-german
mailing list