[Flow] Dynamically add element to array collection with fluid form
Rémy DANIEL
dogawaf at no-log.org
Thu Aug 14 10:06:32 CEST 2014
Hi
Maybe the cookbook [1] should have some recipe for this quite common
usecase.
Cheers
[1] wiki.typo3.org/Flow_Cookbook
--
Rémy
2014-08-13 12:28 GMT+02:00 Carsten Bleicker <carsten at bleicker.de>:
> but they arrive in the action as expected?
> maybe something is wrong with your @orm annotation for persistence or
> maybe you need something like this to not lose the relation.
> User::setConfiguration(Configuration $configuration){
> $configuration->setUser($this)
> }
>
>
> ----------------------
>
> 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 11:12 schrieb Christian Loock <chl at vkf-renzel.de>:
>
> > Ok nevermind,
> >
> > nothing is created. I only dont get any exceptions anymore. Which doesnt
> really help at all :D
> >
> >
> > On 13.08.2014 10:44, Christian Loock wrote:
> >> 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
> >
> > _______________________________________________
> > 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
>
More information about the Flow
mailing list