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

Stefan Padberg post at bergische-webschmiede.de
Tue May 20 12:38:36 CEST 2014


So, weiter gehts:

Es soll die *Inline-Funktionalität* aus dem Backend im Frontend 
nachgebaut werden:

Jeder Termin kann mehrere Ansprechpersonen (Name und Email) haben. Die 
sollen auch im Frontend kre:ier- und editierbar sein.

Im Fluid-Frontend erweitere ich also das Formular um eine for-Schleife:

<f:for each="{termin.ansprechpersonen}" as "ansprechperson" 
iteration="iterator">
	<label>Name</label>
	<f:form.textfield property="" value="{ansprechperson.name}"/>

	[usw. für die anderen Eigenschaften von Ansprechpersonen]
	
</f:for>

Die Felder werden exakt generiert, die vorbelegten Werte werden korrekt 
ausgelesen.

Meine Frage: Was muss in das property-Attribut rein?

Probiert habe ich:
- ansprechpersonen.{ansprechperson.uid}.name
Da erhalte ich die Fehlermeldung:

The form field "tx_myext_myplugin[termini][ansprechpersonen][][vorname]" 
is invalid. Reason: "[]" used not as last argument, but somewhere in the 
middle (like foo[][bar]).

- ansprechpersonen.{iterator.index}.name

Gleiche Fehlermeldung wie oben.

- ansprechpersonen.name

Geht natürlich nicht, denn die Eingaben können auf diese Weise nicht 
differenziert den einzelnen Ansprechpersonen zugeordnet werden.


Wie ist die Syntax hierfür. Weiß das jemand zufällig? Wenn's im Backend 
geht, muss es doch auch im Frontend gehen. Ich möchte jetzt nicht 
anfangen, einen eigenen Viewhelper zu bauen.

Besten Dank für sachdienliche Hinweise ;-)

Stefan Padberg



Am 20.05.2014 09:01, schrieb Stefan Padberg:
> 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