我有一个名为ActorSection
的实体,在一个字段上有一个Count()
断言:
namespace ACME\ACMEBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\JoinTable;
use Symfony\Component\Validator\Constraints as Assert;
class ActorSection
{
//...
/**
* @ORM\ManyToMany(targetEntity="ACME\ACMEBundle\Entity\Post")
* @ORM\joinTable(name="actor_section_post")
* @Assert\Count(
* min = "1",
* minMessage = "Merci de sélectionner au moins un poste",
* )
*/
private $posts;
//...
}
在我的控制器中,"添加"和"版本"操作使用相同的脚本。即使没有选择任何"帖子,表格也会得到验证。孩子。
$handleRequest = $form->handleRequest($request);
if ($request->isMethod('POST')){
if( ! $handleRequest->isValid()){
$request->getSession()->getFlashBag()->add('danger', "Error message");
} else{
$em->persist($Section);
$em->flush();
//...
}
}
ActorSelection
个对象保存得很好,没有任何帖子。
COUNT断言是否忽略了manyToMany关系?
编辑:这是我的表单构建器的相关部分:
$available_posts = $em->getRepository("ACMEBundle:Post")
->getAvailablePosts($convention);
$formBuilder = $this->get('form.factory')->createBuilder(FormType::class, $Section);
$formBuilder
->add('posts', EntityType::class, array(
'label' => false,
'required' => true,
'class' => 'ACME\ACMEBundle\Entity\Post',
'choice_label' => 'cinemaName',
'multiple' => true,
'expanded' => true,
'choices' => $available_posts,
))
->add('save', SubmitType::class)
;
$form = $formBuilder->getForm();