2015-02-14 3 views
1

Привет, я работаю над системой администратора. Я хочу запустить Ограничение проверки «NotBlank» до работает @SecurityAssert \ UserPassword. (в противном случае есть ненужный доступ к базе данных и два разных сообщения об ошибках для пользователя) Возможно ли это? Благодаря!Заказ на проверку ограничений в Symfony2

use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert; 
    use Symfony\Component\Validator\Constraints as Assert; 
    use Symfony\Component\Validator\Constraints\NotBlank; 

class YourClassName 

       /** 
       * @Assert\NotBlank(message = "For security reasons, please enter your current password.") 
       * @SecurityAssert\UserPassword(
       *  message = "Wrong value for your current password" 
       *) 
       */ 
       protected $oldPassword; 
+3

Последовательности групп могут помочь вам в этом - http://symfony.com/doc/current/book/validation.html#group-sequence – qooplmao

ответ

3

Как сказал @Qoop в своем комментарии использование sequence group как на примере ниже может удовлетворить ваши потребности:

use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert; 
use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Component\Validator\Constraints\NotBlank; 

/** 
* @Assert\GroupSequence({"YourClassName", "After"}) 
*/ 
class YourClassName 

     /** 
     * @Assert\NotBlank(
       message = "For security reasons, please enter your current password.") 
     * @SecurityAssert\UserPassword(
     *  message = "Wrong value for your current password", 
       groups={"After"} 
     *) 
     */ 
     protected $oldPassword; 

Не забудьте добавить эти группы проверки при создании формы.

+0

Спасибо. Я также добавляю группы проверки «Before» и «After» к связанной формеType, но получаю сообщение об ошибке «Группа« YourClassName »отсутствует в групповой последовательности» – Acyra

+1

Ответ улучшен ... (в спешке я забыл, что последовательности требуется имя класса entity). –

1

Невозможно ограничить приоритеты с помощью средства проверки Symfony из коробки. Но вы можете написать собственную оболочку для проверки со всеми необходимыми функциями.

См. Например https://github.com/markwilson/symfony2-validator-priority-chain.

2

Если вам нужно решение для одного или двух полей, вы можете использовать Validation Callback. Вы просто проверяете поле для указанных ограничений в методе и вызываете их в своем заказе.

+4

В качестве примера добавьте короткий код. –

Смежные вопросы