[TYPO3-german] Re: Extbase/Fluid: Edit-Formular für n:m-Relation im Frontend erstellen

Stefan Padberg post at bergische-webschmiede.de
Tue May 20 09:01:32 CEST 2014


Das Rätsel ist gelöst: bei n:m-Relationen benutzt man den 
select-Viewhelper in folgender Weise:

<f:form.select multiple="true" size="20" property="kategories" 
value="{termin.kategories}" options="{kategories}" 
optionLabelField="bezeichnung" />

Man beachte die geschweiften Klammern im value-Attribut! Damit übergebe 
ich den gesamten Kategorie-Array an das value-Attribute, und das 
markiert autoamtisch alle selektierten Optionen. Super!

Bei n:1-Relationen lässt man die geschweifte Klammer im value-Attribut 
weg, denn da wird ja nur ein Wert übergeben. Das wäre der Fall, wenn ein 
Objekt nur eine Kategorie haben darf. Dadurch bin ich durcheinander 
gekommen.

Beste Grüße
Stefan Padberg

Am 16.05.2014 14:30, schrieb Stefan Padberg:
> Hallo,
>
> ich komme nicht dahinter und finde auch keine passenden Hinweise im Netz.
>
> Ich habe in meiner Extension 2 Repositories, die in einer n:m-Relation
> zueinander stehen. Im Backend klappt alles wunderbar.
>
> Im Frontend werden die Daten auch korrekt gerendert. Aber das vom
> Extensionbuilder gebaute Edit-Formular umfasst nur die Felder des
> Hauptrepositories, nicht die mit der Relation. Wie muss ich jetzt im
> Frontend ein Eingabefeld für die Relation machen? Und muss ich die
> updateAction erweitern?
>
> Z.B. Termine und Kategorien. Ein Termine hat eine Reihe von
> Eigenschaften, u.a. auch die Kategorien (können mehrere sein). Im
> Extbase-Sprech heißt das Feld "kategories". Also baue ich ein
> select-Feld im Fluid-Formular:
>
> <f:form.select multiple="true" size="20" property="kategories"
> value="termin.kategories" options="{kategories}"
> optionLabelField="bezeichnung" />
>
> Im HTML steht dann:
> <select multiple="true" size="20"
> name="tx_meinetermine_termine[termin][kategories][]">
>      <option value="5">Kategorie 1</option>
>      <option value="6">Kategorie 2</option>
>      <option value="3">Kategorie 3</option>
>      ... usw.
> </select>
>
> Damit bekomme ich im select-Feld alle Kategorien korrekt zu sehen, aber
> keine ist selektiert, obwohl welche schon ausgewählt worden sind (im
> Backend). Und abspeichern lassen sich die ausgewählten Kategorien auch
> nicht. Also die Verbindung zum Kategorie-Repository ist offensichtloich
> nicht da.
>
> In der editAction des terminRepository steht u.a.:
>      $kategories = $this->kategorieRepository->findAll();
>      $this->view->assign('kategories', $kategories);
>
> Damit ziehe ich mir die Kategorien für die select-Optionen.
>
> In der updateAction der terminRepository steht:
>      $this->terminRepository->update($termin);
>
> Aber nix passiert.
>
>
>
> Weiß jemand wie es geht? Hat jemand einen Link parat, wo steht, wie es
> geht? Ich muss in der Richtung noch mehr machen. Als nächstes sollen
> dann auch noch neue Kategorien im Frontend erstellt werden können. Also
> im Prinzip dieselbe Funktionalität wie im Backend, wo ja immer ein
> plus-Zeichen neben dem Kategorie-Select-Feld ist.
>
> Beste Grüße
> Stefan
>
>
>



More information about the TYPO3-german mailing list