Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2][Symfony2] Formularz z kolekcją
Forum PHP.pl > Forum > PHP > Frameworki
Fluke
Witam,

Mam problem z ogarnięciem formularza.

Mam encje:
  1. User {
  2. /** @ORM\OneToMany(targetEntity="UserAccount", mappedBy="user") */
  3. protected $accounts;
  4. }

oraz
  1. UserAccount {
  2. /**
  3. * @ORM\Id()
  4.   * @ORM\ManyToOne(targetEntity="User", inversedBy="accounts")
  5.   * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
  6. */
  7. protected $user;
  8. }


Teraz chcę, żeby w formularzu wyświetlały się wszystkie element "UserAccount".

Klasa formularza UserType:
  1. public function buildForm(FormBuilderInterface $builder, array $options) {
  2. $builder->add(
  3. 'accounts',
  4. 'collection',
  5. [
  6. 'type' => new UserAccountType()
  7. ]
  8. );
  9. }
  10.  
  11. public function setDefaultOptions(OptionsResolverInterface $resolver) {
  12. $resolver->setDefaults([
  13. 'data_class' => User::class
  14. ]);
  15. }


oraz formularz: UserAccountType:
  1. public function buildForm(FormBuilderInterface $builder, array $options) {
  2. $builder->add(
  3. 'user',
  4. 'hidden'
  5. );
  6. }
  7.  
  8. /**
  9.   * @param OptionsResolverInterface $resolver
  10.   */
  11. public function setDefaultOptions(OptionsResolverInterface $resolver) {
  12. $resolver->setDefaults([
  13. 'data_class' => UserAccount::class
  14. ]);
  15. }


W kontrolerze przekazuję
  1. $this->createForm(new UserType(), $user);


A dostaję taki błąd:
  1. 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
pabito
a czy ustawiasz protected $accounts; w construktorze encji na nowy obiekt ArrayCollection() ?

tak jak w poniższym linku ?
http://symfony.com/doc/current/book/doctri...apping-metadata
Fluke
@pabito

Tak
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.