[英]UnexpectedTypeException when trying to create a custom validation constraint
我正在嘗試創建一個自定義驗證約束,這是相關的代碼:
ValidCoupon.php
<?php
namespace Bcg\UtilsBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* @Annotation
*/
class ValidCoupon extends Constraint
{
public function validatedBy()
{
return 'valid_coupon';
}
public $message = 'The coupon is not valid.';
}
class ValidCouponValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
var_dump($value);
if (true) {
$this->context->addViolation(
$constraint->message,
array()
);
}
}
}
我在config.yml中這樣調用服務:
services:
validator.unique.valid_coupon:
class: Bcg\UtilsBundle\Validator\Constraints\ValidCoupon
tags:
- { name: validator.constraint_validator, alias: valid_coupon }
validate.yml如下所示:
Bcg\UtilsBundle\Entity\Order:
properties:
coupon:
- Bcg\UtilsBundle\Validator\Constraints\ValidCoupon: ~
我得到的錯誤如下:
給定500內部服務器錯誤-類型為“ Symfony \\ Component \\ Validator \\ ConstraintValidatorInterface”,“ Bcg \\ UtilsBundle \\ Validator \\ Constraints \\ ValidCoupon”的預期參數,給出了500內部服務器錯誤-UnexpectedTypeException
完整的堆棧跟蹤在這里 。
我很困,似乎沒有找到ValidCouponValidator
我真的不知道如何從這里繼續,我知道公共函數validateBy()
已執行,因此應該正確地重寫它,但似乎沒有所以...
似乎您在驗證程序服務配置中具有類型:
您將ValidCoupon類聲明為驗證器,而不是ValidCouponValidator(由於錯誤所抱怨,它實際上實現了ConstraintValidatorInterface)。
嘗試這個:
services:
validator.unique.valid_coupon:
class: Bcg\UtilsBundle\Validator\Constraints\ValidCouponValidator
tags:
- { name: validator.constraint_validator, alias: valid_coupon }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.