Entiteit vormt problemen met de relatie tussen Symfony2 en vele tot vele

Ik ben eigenlijk Symfony2 aan het leren en ik heb een probleem. Ik heb een relatie van veel tot veel tussen een film en een acteur.

Ik heb een formulier gemaakt om een ​​nieuwe film te maken. In deze vorm heb ik een geselecteerde invoer om acteurs te kiezen maar toen ik veel acteurs selecteerde, genereerde het formulier een fout "Deze waarde moet niet leeg zijn". Wanneer ik mijn assert verwijder in acteursklasse, heb ik deze fout niet. Waarom controleert mijn formulier de bewering in mijn acteursklasse?

    /*
       *  MOVIE CLASS
       *
       */    
    class Movie
        {
            //...


            /**
             * @ORM\ManyToMany(targetEntity="Actor", inversedBy="movies")
             * @ORM\JoinTable(name="movie_actor")
             */
            protected $actors;
        }

       /*
       *  ACTOR CLASS
       *
       */

        class Actor
        {

            /**
             * @ORM\Column(type="string", length="255")
             * @Assert\NotBlank()
             * @Assert\MinLength(3)
             */
            protected $firstName;

            /**
             * @ORM\Column(type="string", length="255")
             * @Assert\NotBlank()
             * @Assert\MinLength(3)
             */
            protected $lastName;

            /**
             * @ORM\Column(type="date", nullable = true)
             */
            protected $birthday;

            /**
             * @ORM\Column(type="boolean")
             * @Assert\NotBlank()
             */
            protected $sexe;


            /**
             * @ORM\ManyToMany(targetEntity="Movie", mappedBy="actors")
             * @Assert\NotNull()
             */
            protected $movies;
        }


/**
*
* MOVIE FORM 
*/
class MovieType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('title')
            ->add('description')
            ->add('category')
            ->add('actors', 'entity',  
            array(
                'class' => 'MyAppFilmothequeBundle:Actor',
                'query_builder' => function(EntityRepository $er)
                    {
                        return $er->createQueryBuilder('a')->orderBy('a.firstName', 'ASC');
                    },
                 'multiple' => true
            ))
            ->add('user')
        ;
    }

    public function getDefaultOptions(array $options)
    {
        return array(
        'data_class' => 'MyApp\FilmothequeBundle\Entity\Movie');
    }
    public function getName()
    {
        return 'movie';
    }
}
3

1 antwoord

Validatie wordt uitgevoerd door een reeks regels (beperkingen genoemd) aan een klas toe te voegen. Dus uw formulier kijkt naar beweringen die u in de gerelateerde klasse plaatst om te controleren of ingediende gegevens geldig zijn of niet. Raadpleeg het hoofdstuk Formulieren .

Nog één ding: entiteitsveld als een "vereiste" optie standaard ingesteld op "true". Zet het gewoon op false, als je het echt wilt.

0
toegevoegd
En zoals de officiële documentatie ook zegt, vereist is alleen gebruikt voor validering van de clientzijde via vereist HTML5-kenmerk.
toegevoegd de auteur i.am.michiel, de bron