Forms 实体与Symfony2多对多关系形成问题
我实际上在学习Symfony2,我有一个问题。我在电影和演员之间有一种多对多的关系 我已经创建了一个表单来创建一部新电影。在此表单中,我有一个选择的输入来选择参与者,但当我选择多个参与者时,表单生成一个错误“此值不应为空”。当我在actor类中删除断言时,我没有发现这个错误。 为什么我的表单在我的actor类中检查断言Forms 实体与Symfony2多对多关系形成问题,forms,many-to-many,entity,symfony,Forms,Many To Many,Entity,Symfony,我实际上在学习Symfony2,我有一个问题。我在电影和演员之间有一种多对多的关系 我已经创建了一个表单来创建一部新电影。在此表单中,我有一个选择的输入来选择参与者,但当我选择多个参与者时,表单生成一个错误“此值不应为空”。当我在actor类中删除断言时,我没有发现这个错误。 为什么我的表单在我的actor类中检查断言 /* * MOVIE CLASS * */ class Movie {
/*
* 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';
}
}
验证是通过向类添加一组规则(称为约束)来完成的。因此,您的表单将查看放入相关类中的断言,以检查提交的数据是否有效。检查这一章
还有一件事:实体字段默认设置为“true”。如果您真的需要,只需将其设置为false。并且正如官方文档所述,required仅用于通过HTML5属性required进行客户端验证。