2017-01-29 3 views
1

У меня есть этот код в Entity:Symfony утверждают, игнорирует пользовательские сообщения

/** 
    * @Assert\Type(
    *  type="real", 
    *  message="Price for vehicle service must be real number." 
    *) 
    * 
    * @ORM\Column(name="min_price", type="float") 
    */ 
    protected $minPrice; 

Но если в этом поле формы вводится значение нецелочисленное, Symfony возвращает сообщение об ошибке локаль по умолчанию (в моем случае Значение недопустимо), а не «Цена за обслуживание автомобиля должна быть реальной цифрой». Это не удобно, потому что по ошибке не указано имя поля и требуется время, чтобы найти это поле, если есть сложная форма.

Возможно, решение может быть проверкой обратного вызова, но по моему субъективному мнению оно не появится, потому что пользователь может видеть только сообщение по умолчанию по умолчанию. Когда я пытался избежать этого, добавляя @Assert \ Regex (pattern = "/ + d /", message = "custom message"), я все равно видел сообщение по умолчанию для локали.

Symfony Profiler показывает ошибку ниже:

Symfony\Component\Validator\ConstraintViolation 
Object(Symfony\Component\Form\Form).children[vehiclePriceOutOfTown].children[minPrice] = g 
Caused by: 
Symfony\Component\Form\Exception\TransformationFailedException 
Unable to reverse value for property path "minPrice": Number parsing failed: U_PARSE_ERROR 
Caused by: 
Symfony\Component\Form\Exception\TransformationFailedException 
Number parsing failed: U_PARSE_ERROR 

ответ

0

за исключением вы видите, срабатывает при преобразовании пользовательского ввода. Это происходит до того, как применяется действительная логика проверки (это происходит как часть события POST_SUBMIT). Если вы хотите настроить сообщение об ошибке, которое отображается при вызове TransformationFailedException, вы можете использовать invalid_message option для конкретного типа формы.

+0

спасибо, просто добавив 'invalid_message', как вы сказали, решил вопрос. –

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