Symfony3 - 我可以使用断言" Count"在ManyToMany关系?

时间:2017-01-20 17:52:07

标签: php symfony assert

我有一个名为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();

0 个答案:

没有答案