2014-10-15 2 views
1

Я пытаюсь создать ограничение пользовательских проверки, это соответствующий код:UnexpectedTypeException при попытке создать ограничение пользовательских проверки

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() 
      ); 
     } 
    } 
} 

я называю обслуживание в конфигурации .yml нравится:

services: 
    validator.unique.valid_coupon: 
     class: Bcg\UtilsBundle\Validator\Constraints\ValidCoupon 
     tags: 
      - { name: validator.constraint_validator, alias: valid_coupon } 

validation.yml выглядит следующим образом:

Bcg\UtilsBundle\Entity\Order: 
    properties: 
     coupon: 
      - Bcg\UtilsBundle\Validator\Constraints\ValidCoupon: ~ 

И ошибка я получаю следующее:

Ожидаемый аргумент типа "Symfony \ Component \ Validator \ ConstraintValidatorInterface", "Bcg \ UtilsBundle \ Validator \ Ограничения \ ValidCoupon" дается 500 Internal Ошибка сервера - UnexpectedTypeException

Полная трассировка стека here.

Я довольно застрял, кажется, не нашел ValidCouponValidator Я не знаю, как продолжить здесь, я знаю, что публичная функция validateBy() выполнена, поэтому она должна быть правильно переопределена, т, кажется, так ...

ответ

5

Похоже у вас есть тип в конфигурации службы валидатора:

вы объявляете свой класс ValidCoupon как валидатор вместо вашего ValidCouponValidator (который действительно реализует ConstraintValidatorInterface как ошибка жалуется) ,

Попробуйте это:

services: 
    validator.unique.valid_coupon: 
     class: Bcg\UtilsBundle\Validator\Constraints\ValidCouponValidator 
     tags: 
      - { name: validator.constraint_validator, alias: valid_coupon } 
+0

Спасибо, я попытался это, но сочетание других ошибок помешало мне заметить, если это правильное решение, спасибо! Я проверю немного больше, но это кажется правильным. – Trufa

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