簡體   English   中英

Symfony 2.5 addViolationAt 已棄用,使用 buildViolation()

[英]Symfony 2.5 addViolationAt deprecated, use buildViolation()

我一直在關注關於如何創建類約束驗證器的食譜,現在我正准備在validate()函數中添加違規。

但是,我的 IDE 通知我不推薦使用addViolation()addViolationAt()函數。

有人可以指出我如何使用Context\\ExecutionContextInterface::buildViolation()函數的正確方向嗎?

$this->contextSymfony\\Component\\Validator\\ExecutionContext一個實例

class ProtocolClassValidator extends ConstraintValidator
{
    public function validate($protocol, Constraint $constraint)
    {
        if ($protocol->getFoo() != $protocol->getBar()) {
            $this->context->addViolationAt(
                'foo',
                $constraint->message,
                array(),
                null
            );
        }
    }
}

當將調用$this->context->addViolationAt()更改為簡單的$this->context->buildViolation() ,我得到以下異常:

UndefinedMethodException:試圖在剝離的路徑第 23 行中對類“Symfony\\Component\\Validator\\ExecutionContext”調用方法“buildViolation”。您是想調用:“addViolation”嗎?

第 23 行有以下代碼:

    $builder = $this->context->buildViolation($constraint->message)
    ->atPath('formField')
    ->addViolation();

addViolationaddViolationAt從 2.5 addViolationAt被棄用,但直到 3.0 才會被移除,因此它們仍然可以使用一段時間。

但是...取自UPGRADE FROM 2.x to 3.0日志...

方法addViolationAt()已刪除。 您應該使用buildViolation()代替:

前:

$context->addViolationAt('property', 'The value {{ value }} is invalid.', array(
    '{{ value }}' => $invalidValue,
));

后:

$context->buildViolation('The value {{ value }} is invalid.')
    ->atPath('property')
    ->setParameter('{{ value }}', $invalidValue)
    ->addViolation();
));

Context/ExecutionContextInterface 中獲取更多信息......

/**
 * Returns a builder for adding a violation with extended information.
 *
 * Call {@link ConstraintViolationBuilderInterface::addViolation()} to
 * add the violation when you're done with the configuration:
 *
 *     $context->buildViolation('Please enter a number between %min% and %max.')
 *         ->setParameter('%min%', 3)
 *         ->setParameter('%max%', 10)
 *         ->setTranslationDomain('number_validation')
 *         ->addViolation();
 *
 * @param string $message    The error message
 * @param array  $parameters The parameters substituted in the error message
 *
 * @return ConstraintViolationBuilderInterface The violation builder
 */
public function buildViolation($message, array $parameters = array());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM