別のフィールドの値に応じてフィールドの値を検証する方法について読みました。しかし、これらはすべて関数 "isValid()" を使用する symfony2.1 にあります。「validate()」関数を使用しているため、これは私の場合ではありません。
これが私のコードです:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('type');
$builder->addValidator(new CallbackValidator(function(FormInterface $form){
$validator = new IntegerValidator();
$validator->validate($description->getData(),new Integer());
}));
}
ただし、送信すると、常に次のエラーが発生します。
Call to a member function addViolation() on a non-object in ..\IntegerValidator.php
これらは私の2つのクラスのコードです。
class IntegerValidator extends ConstraintValidator{
public function validate($value, Constraint $constraint)
{
if (!preg_match('/^[0-9]+$/', $value, $matches)) {
$this->context->addViolation($constraint->message, array('%string%' => $value));
}
}
}
そして、これは私の制約クラスです
/**
* @Annotation
*/
class Integer extends Constraint{
public $message = 'The string "%string%" contains an illegal character: it can only be an integer.';
}
どうすればこれを実装できますか?. どうもありがとうございました。