2014-09-22 69 views
0

我有一個多對多的關係(用戶和帳戶)。在用戶實體中,我擁有私有屬性組(數組集合)。Symfony2約束實體驗證yml

當我嘗試使用簡單的「NotBlank」驗證此屬性(組)時,它不起作用。所以我在下面嘗試(收集和選擇)。

我看了這個http://symfony.com/fr/doc/2.3/reference/constraints/Choice.html 和這個http://symfony.com/fr/doc/2.3/reference/constraints/Collection.html但它不起作用,或者我沒有正確使用它們。

任何人都可以給我一些幫助嗎?

/* USER accounts property 

... 

/** 
* @ORM\ManyToMany(targetEntity="Account", mappedBy="users", cascade={"persist", "remove"}) 
*/ 
private $accounts; 

... 

比起USERTYPE

... 
->add('accounts', 'genemu_jqueryselect2_entity', array(
        "class"   => "CMiNewsBundle:Account", 
        "property"  => "name", 
        "multiple"  => "true", 
        "query_builder" => function (EntityRepository $er) use ($user) 
        { 
          return $er->createQueryBuilder('acc') 
            ->join('acc.users','u') 
            ->where('u.id = :userID') 
            ->setParameter('userID' , $user); 
        } 
        ) 
) 
... 

的validation.yml

CM\Bundle\iNewsBundle\Entity\User: 
    properties: 

     ... 

     accounts: 
      - NotBlank: ~ 

     ... 

回答

2

「NotBlank」 斷言檢查屬性===空||財產===''。既然你的屬性是一個集合,你可能在構造函數中將它初始化爲一個ArrayCollection,所以它永遠不會爲空。

對於你應該使用「計數」集合斷言

http://symfony.com/doc/current/reference/constraints/Count.html

它迫使你設置的「最大」計數以及最小的,所以你可能要創建自己的斷言。

+0

太好了,它工作的很好! Thx爲您提供幫助。事實上,我必須創建自己的斷言。 – 2014-09-22 13:30:09

+0

嗨,在Symfony 3.0中,我沒有被迫設置最大值。但爲了使它以我的形式工作,我必須設置正確的驗證組來啓用約束。不要忘記這一點,節省大量時間! ;) – spackmat 2016-01-29 12:47:01