[Flow] Dynamically add element to array collection with fluid form

Christian Loock chl at vkf-renzel.de
Wed Aug 13 10:44:33 CEST 2014


Hi,

this is how I did it:

     public function initializeUpdateAction()
     {
         $databaseServerMappingConfiguration = 
$this->arguments->getArgument('databaseServer')->getPropertyMappingConfiguration();
         /* @var $commentConfiguration 
\TYPO3\Flow\Property\PropertyMappingConfiguration */
$databaseServerMappingConfiguration->forProperty('databaseUsers')->allowAllProperties();
         $databaseServer = $this->request->getArgument('databaseServer');
         $databaseUsers = $databaseServer['databaseUsers'];
         // \TYPO3\Flow\var_dump($databaseUsers);
         foreach ($databaseUsers as $key => $databaseUser) {
$databaseServerMappingConfiguration->forProperty('databaseUsers.' . 
$key)->allowAllProperties();

$databaseServerMappingConfiguration->allowCreationForSubProperty('databaseUsers.' 
. $key);
$databaseServerMappingConfiguration->allowModificationForSubProperty('databaseUsers.' 
. $key);
         }

     }


It works without exceptions, and the database users get created. 
However, they dont have the reference to the databaseServer set :(





On 13.08.2014 09:58, Carsten Bleicker wrote:
> The dynamic fields are not known to trusted properties wich is usualy build up by any formfield viewhelper.
> I think in case of dynamic fields you need an initializeFooAction() wich allows these dynamic subsets.
>
> something like this:
> 	/**
> 	 * @return void
> 	 */
> 	protected function initializeCreateAction() {
> 		$databaseServerMappingConfiguration = $this->arguments->getArgument('databaseServer')->getPropertyMappingConfiguration();
> 		/** @var array $databaseServers */
> 		$databaseServers = $this->request->getArgument('databaseServer');
> 		foreach ($databaseServers as $key => $server) {
> 			$databaseServerMappingConfiguration->forProperty('databaseUsers.' . $key)->allowAllProperties();
> 		}
> 	}
>
>
> ----------------------
>
> Carsten Bleicker
> Wülfingstraße 1
> 42477 Radevormwald
>
> E-Mail:	carsten at bleicker.de
> Web:	www.bleicker.de
> Twitter:	@carstenbleicker
> Jabber:	cbleicker at jabber.ccc.de
> Telefon:	+49 (0)171-2690845
>
> Am 13.08.2014 um 09:41 schrieb Christian Loock <chl at vkf-renzel.de>:
>
>> Hello,
>>
>> I am trying to build a form with fluid, that automatically adds entries to an ArrayCollection. The collection consists of entities, that shoukd be dynamically created and added to the collection. Inside the form, i add new fields via javascript.
>>
>> The generated fluid form looks somewhat like this:
>>
>>
>>
>>             <input placeholder="databaseServer.databaseuser.username" class="form-control" type="text" name="databaseServer[databaseUsers][0][username]" value="xxx">
>>             <input placeholder="databaseServer.databaseuser.password" class="form-control" type="password" name="databaseServer[databaseUsers][0][password]" value="xxx">
>>             <input placeholder="databaseServer.databaseuser.username" class="form-control" type="text" name="databaseServer[databaseUsers][1][username]" value="xxx">
>>             <input placeholder="databaseServer.databaseuser.password" class="form-control" type="password" name="databaseServer[databaseUsers][1][password]" value="xxx">
>>
>>
>> The first entry, is an existing entity. When I only try to submit the form with this one in it, it will safe with no problem.
>> However, when i try to add a new row to the form, so that there is an entry that does not exist in the database, I get an exception:
>>
>>
>>    1297759968: Exception while property mapping for target type
>>    "VKF\Deployment\Domain\Model\DatabaseServer", at property path
>>    "databaseUsers": It is not allowed to map property "1".
>>
>> You need to use $propertyMappingConfiguration->allowProperties('1') to enable mapping of this property.
>>
>>
>> Does anybody know, why this happens?
>>
>>
>>
>> _______________________________________________
>> Flow mailing list
>> Flow at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/flow
>
>
> _______________________________________________
> Flow mailing list
> Flow at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/flow

-- 
Christian Loock
Web Developer
Renzel Agentur
www.renzel-agentur.de



More information about the Flow mailing list