[Flow] Type mapping for ArrayCollection Objects

Alexander Berl a.berl at outlook.com
Tue Jun 17 12:02:28 CEST 2014


Do you have a proper setter for your Collection property in the
AggregateRoot class?
e.g. function setSubObjects(\Doctrine\Common\Collections\Collection
$collection) { $this->subObjects = $collection; }

Regards,
Alexander

Am 17.06.2014 04:26, schrieb Rocky:
> Hi,
> The aggregate root object has many subObject. In the AggregateRoot.php I
> have below code:
>   
> /**                                                                                                               
>     * @var
> \Doctrine\Common\Collections\Collection<\My\App\Domain\Model\SubObject>                          
>     *
> @ORM\OneToMany(mappedBy="aggregateRoot",cascade="all")                                                             
>    
> */                                                                                                               
>    protected $subObjects; 
> The SubObject is an entity and has its own properties. In the New.html
> for AggregateRootController's new action, I have below code:
>        <label for="subObjects.1.propertyA">Property
> A</label>                                                                     
>        <f:form.textfield property="subObjects.1.propertyA"
> id="subObjects.1.propertyA"
> />                                                      <label
> for="subObjects.1.propertyB">Property
> B</label>                                                                 
>        <f:form.textfield name="subObjects.1.propertyB"
> id="subObjects.1.propertyB" />                                      
> When I submit the form, I got below exception:
> Uncaught Exception in Flow
> #1297759968: Exception while property mapping for target type
> "My\App\Domain\Model\AggregateRoot", at property path "": Property
> "subObjects" having a value of type
> "Doctrine\Common\Collections\ArrayCollection" could not be set in target
> object of type "My\App\Domain\Model\AggregateRoot".
> 
> I have tried something like below code but no luck:
> protected function initializeUpdateAction() {
>        $commentConfiguration =
> $this->arguments['comment']->getPropertyMappingConfiguration();
>       $commentConfiguration
>        ->forProperty('items.*')
>        ->setTypeConverterOption(
>               
> 'TYPO3\Flow\Property\TypeConverter\PersistentObjectConverter',
>               
> \TYPO3\Flow\Property\TypeConverter\PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED,
> 
>                TRUE
>        );
> }
> 
> Any idea how can I make TYPO3 Flow do the type mapping for
> ArrayCollection objects, so I could create the whole aggregate with one
> form please?


More information about the Flow mailing list