Witam,
od razu mówię, że Symfony2 to mój pierwszy framework. Robię formularz dodawania artykułów. Wszystko dodaje się już ładnie do bazy danych. Teraz postanowiłem dodać jeszcze validację. Na polach tekstowych nie było z tym problemu, jednak z takim select'em nie mogę sobie już poradzić.

W bazie są dwie tabele article i channel połączone relacją ManyToMany. Próbuję na różne sposoby validować przesyłane dane z selecta np. na zasadzie http://symfony.com/doc/2.2/reference/const...e.html#callback :

FilmType.php
  1. <?php
  2.  
  3. namespace FP\SiteBundle\Form;
  4.  
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\OptionsResolver\OptionsResolverInterface;
  8.  
  9. use Doctrine\ORM\EntityRepository;
  10.  
  11.  
  12.  
  13. class ArticleType extends AbstractType
  14. { public function buildForm(FormBuilderInterface $builder, array $options)
  15. {
  16. $builder->add('description', 'textarea', array(
  17. 'label' => 'Opis:',
  18. 'required' => true,
  19. 'trim' => true,
  20. 'max_length' => 2000,
  21. ));
  22. ...
  23. ...
  24. $builder->add('channels', 'entity',array(
  25. 'class' => 'FP\SiteBundle\Entity\Channel',
  26. 'multiple' => true,
  27. 'expanded' => false,
  28. 'query_builder' => function(EntityRepository $er)
  29. {
  30. return $er->createQueryBuilder('c')
  31. ->orderBy('c.id', 'ASC');
  32. })
  33. );
  34. }
  35. ...
  36.  



validation.yml
  1. FP\SiteBundle\Entity\Article:
  2. properties:
  3. channels:
  4. - Choice:
  5. callback: getLegalChannels



Fragment Entity artcicle.php
  1. public static function getLegalChannels()
  2. {
  3. return array('0', '2', '4');
  4. }


Wpisałem wartości na stałe, jednak chyba powinny być to obiekty channel? Z kolei których nie wiem jak uzyskać tutaj w metodzie statycznej.


Przez co cały czas otrzymuje komunikat:

The value you selected is not a valid choice.