实体与Symfony2关系形成多对多的问题



我实际上正在学习Symfony2,我有一个问题。我在电影和演员之间有很多联系。

我已经创建了一个表单来创建一个新的电影。在这个表单中,我有一个选择的输入来选择演员,但是当我选择许多演员时,表单产生了一个错误"这个值不应该是空白的"。当我删除我的断言在演员类,我没有这个错误。为什么我的表单检查断言在我的演员类?

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

            /**
             * @ORMManyToMany(targetEntity="Actor", inversedBy="movies")
             * @ORMJoinTable(name="movie_actor")
             */
            protected $actors;
        }
       /*
       *  ACTOR CLASS
       *
       */
        class Actor
        {
            /**
             * @ORMColumn(type="string", length="255")
             * @AssertNotBlank()
             * @AssertMinLength(3)
             */
            protected $firstName;
            /**
             * @ORMColumn(type="string", length="255")
             * @AssertNotBlank()
             * @AssertMinLength(3)
             */
            protected $lastName;
            /**
             * @ORMColumn(type="date", nullable = true)
             */
            protected $birthday;
            /**
             * @ORMColumn(type="boolean")
             * @AssertNotBlank()
             */
            protected $sexe;

            /**
             * @ORMManyToMany(targetEntity="Movie", mappedBy="actors")
             * @AssertNotNull()
             */
            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' => 'MyAppFilmothequeBundleEntityMovie');
    }
    public function getName()
    {
        return 'movie';
    }
}

通过向类添加一组规则(称为约束)来完成验证。因此,表单将查看您放入相关类中的断言,以检查提交的数据是否有效。查看表单章节

还有一件事:实体字段作为"required"选项默认设置为"true"。如果你真的需要,就把它设为false。

最新更新