Mam problem z ogarnięciem formularza.
Mam encje:
User { /** @ORM\OneToMany(targetEntity="UserAccount", mappedBy="user") */ protected $accounts; }
oraz
UserAccount { /** * @ORM\Id() * @ORM\ManyToOne(targetEntity="User", inversedBy="accounts") * @ORM\JoinColumn(name="user_id", referencedColumnName="id") */ protected $user; }
Teraz chcę, żeby w formularzu wyświetlały się wszystkie element "UserAccount".
Klasa formularza UserType:
$builder->add( 'accounts', 'collection', [ 'type' => new UserAccountType() ] ); } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults([ 'data_class' => User::class ]); }
oraz formularz: UserAccountType:
$builder->add( 'user', 'hidden' ); } /** * @param OptionsResolverInterface $resolver */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults([ 'data_class' => UserAccount::class ]); }
W kontrolerze przekazuję
$this->createForm(new UserType(), $user);
A dostaję taki błąd:
The form's view data is expected to be of type scalar, array or an instance of \ArrayAccess, but is an instance of class User. You can avoid this error by setting the "data_class" option to "User" or by adding a view transformer that transforms an instance of class User to scalar, array or an instance of \ArrayAccess.
Macie jakieś pomysły jak to rozwiązać bo ja niestety chyba wszystkie spróbowałem i nic nie wychodzi. Jedynie błąd się zmienia (inna klasa). Robiłem też wszystko od nowa według tego poradnika: http://symfony.com/doc/current/cookbook/fo...ollections.html
Z góry dzięki za wszelką pomoc i pozdrawiam.
Już wiem gdzie miałem błąd...
Chodzi o to, że moja kalsa UserAccount posiada referencję do User (atrybut: $user). W formularzy UserAccountType mam pole: user typu hidden...
Czasem trzeba 10x popatrzeć na każdą linijkę, żeby dostrzec błąd, a najgłupsze wyłapuje się najtrudniej ...
Pozdrawiam