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

Antwort per Email an