2014-11-09 6 views
1

Я написал специальную проверку для типа поля рождения. Я уже писал пользовательскую проверку прежде, но не для поля DateTime.Symfony custom constraint/Validation Birthday

При проверке функции моего AdultBirthdateValidator заключается в следующем:

// $value of type DateTime 
public function validate($value, Constraint $constraint) 
{ 
    $min_age = 18; 

    if($this->validate_age($value, $min_age) === false) 
    { 
     $this->context->buildViolation($constraint->message) 
      ->setParameter('%string%', $value) 
      ->addViolation(); 
    } 
} 

Проблема заключается в том, что я не совсем что теперь:

->setParameter('%string%', $value) 

эта функция ожидает. Заданное значение $ - поле DateTime, поэтому я не знаю, как передать его здесь. (Строка, конечно, выдает ошибку). Как мне это сделать правильно?

С уважением.

+0

В каком формате вы отправляете DateTime? Можете ли вы отправить пример данных, отправляемых на сервер. –

+0

Вы можете захватить это, используя инструменты разработчика Chrome и перехватывая сетевой трафик. Вы ищете данные формы, это может быть под заголовками –

+0

Для дат, использующих библиотеку, помогает, например, один https://github.com/Lawondyss/MomentPHP –

ответ

0

Из того, что я читал, вы должны быть в состоянии сделать что-то вроде этого ...

$this->context->addViolation(
    $constraint->message, 
    array('%string%' => $value->format('Y-m-d')) //Formats DateTime to a string 
); 

Но то, что я не видел ваш соответствующий класс с $constraint->message, так что я не уверен, что если это формат, который вы хотите, или действительно, если вам даже понадобится их дата рождения, чтобы создать сообщение ограничения.

+0

эй, так что это не работает, я уже пробовал: if ($ this-> validate_age ($ value, $ min_age) === false) { 10 $ this-> context-> buildViolation ($ constraint-> message) -> setParameter ('% string%', $ value-> format ('dd/MM/yyyy')) -> addViolation(); } (сборникValidation symfony 2.5). Мой другой класс является следующее: */ класс AdultBirthdate расширяет Constraint { $ Разъяснительная = 'profile.register.adultBirthdate'; public function validatedBy() { return get_class ($ this). 'Validator'; } } –

+0

Я не знаю, почему, ошибок нет, но нарушение никогда не добавляется .. когда я вызываю $ err = (string) $ this-> form-> getErrors (true, false); позже его здесь нет. Все остальные ошибки, но мое пользовательское ограничение - нет. –

0

Исправлено. Проблемой был формат $ value-> ('Y-m-d') и ошибка в моей функции Serializer.