1

カスタム検証制約を作成しようとしています。これは関連するコードです:

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 }

validation.yml は次のようになります。

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

そして、私が得るエラーは次のとおりです。

タイプ「Symfony\Component\Validator\ConstraintValidatorInterface」、「Bcg\UtilsBundle\Validator\Constraints\ValidCoupon」の予期される引数は、500 内部サーバー エラー - UnexpectedTypeException を指定されました

ここに完全なスタック トレースがあります。

私はかなり立ち往生していValidCouponValidatorます。ここから続行する方法が本当にわからないようです。パブリック関数validateBy()が実行されていることはわかっているので、正しくオーバーライドする必要がありますが、そうではないようです...

4

1 に答える 1