[TYPO3-mvc] Editing 1:n connections - Fluid forms

Henjo Hoeksma me at henjohoeksma.nl
Sun Nov 7 20:18:30 CET 2010


On 2010-11-07 11:34:24 +0100, christian oettinger said:

> christian oettinger schrieb:
>> Hello all,
>> 
>> 
>> I'm new to the List an (sorry!) quite new to Extbase/Fluid as well.
>> Maybe my question ist trivial, but I did not find a solution, I hope
>> someone can help.
>> 
>> My Model has a Root "Patient". It has some Properties itself, a (1:1)
>> child "FirstInfusion" and, amongst others, some (1:n) childs "Diagnosis".
>> 
>> It's fantastically easy to make a new Object in Fluid:
>> 
>> <f:form.textbox property="country" /><br />
>> <f:form.textbox property="firstInfusion.firstInfDate" /><br />
>> <f:form.textbox property="diagnosis.0.diagnosisName" /><br />
>> <f:form.textbox property="diagnosis.1.diagnosisName" /><br />
>> 
>> Editing the first two cases is also easy:
>> 
>> <f:form.textbox property="country" /><br />
>> <f:form.textbox property="firstInfusion.firstInfDate" /><br />
>> 
>> But I don't understand how to edit the 1:n connection.
>> The following will create the same Source Code as above, but the Values
>> are not loaded. So two new Childs are created:
>> 
>> <f:form.textbox property="diagnosis.0.diagnosisName" /><br />
>> <f:form.textbox property="diagnosis.1.diagnosisName" /><br />
>> 
>> The follwing loop is run, gives out the connected diagnoses - but also
>> does not get the values in the Form fields.
>> 
>> <f:for each="{patient.diagnosis}" as="oneDiagnosis">
>> {oneDiagnosis.diagnosisName}
>> <f:form.textbox property="oneDiagnosis.diagnosisName" />
>> </f:for>
>> 
>> I'm now looking for the right way to approach this.
>> Thanks a lot fo any hint!
>> 
>> christian (oe)
> 
> 
> A working Approach, seems to be:
> 
> <f:for each="{patient.diagnosis}" as="oneDiagnosis"> 						
> 
>     <f:form.textbox 
> name="patient[diagnosis][{oneDiagnosis.uid}][diagnosisName]" 
> value="{oneDiagnosis.diagnosisName}"/>
> 
>     <f:form.hidden 
> name="patient[diagnosis][{oneDiagnosis.uid}][__identity]" 
> value="{oneDiagnosis.uid}"/>
> 
> </f:for>
> 
> Note that you add the hidden field "__identity" (where you give the 
> uid), so that the values are updated not new children created.
> 
> Note also that "{oneDiagnosis.uid}" in 
> "patient[diagnosis][{oneDiagnosis.uid}]..." is just a way to different 
> between the childs. It's an identifier, like an array key not used for 
> persistence. You could (as far as I understand - untested) use any 
> iterating number.
> 
> 
> greetings!
> oe (christian)

Thanks for sharing Christian!

Henjo



More information about the TYPO3-project-typo3v4mvc mailing list