2015-04-20 2 views
0

У меня есть тип объекта из:Symfony2 валидация - первое значение меньше второго

/** 
* @ORM\Table(name="entity") 
*/ 
class Entity 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(type="integer", nullable=true) 
    */ 
    private $value1; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(type="integer", nullable=true) 
    */ 
    private $value2; 
} 

Как проверить с проверкой, что $value1 меньше $value2?

+0

[Это] (HTTP://symfony.com/doc/current/reference/constraints/Callback.html) должно быть полезно: обратный вызов проверки правильности, который позволяет сравнивать оба значения и соответственно устанавливать нарушения –

ответ

2

Вы можете использовать Expression ограничение в вашей организации

use Symfony\Component\Validator\Constraints as Assert; 
/** 
* @ORM\Table(name="entity") 
*/ 
class Entity 
{ 
    /** 
    * @var integer 
    * @Assert\Expression(
    *  "this.getValue2() < this.getValue1()", 
    *  message="Value 1 should be less than value 2" 
    * ) 
    * @ORM\Column(type="integer", nullable=true) 
    */ 
    private $value2; 
} 
1

В принципе, как и the cookbook explains extensively, вы, вероятно, хотите добавить следующее к лицу:

use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Component\Validator\Context\ExecutionContextInterface; 
class Entity 
{ 
    //the values stay the same 
    /** 
     * @Assert\Callback 
     */ 
    public function validate(ExecutionContextInterface $context) 
    { 
     if ($this->value1 >= $this->value2) 
     { 
      $context->buildViolation('Value1 should be less than value2') 
       ->atPath('value1') 
       ->addViolation(); 
     } 
    } 
} 
Смежные вопросы