2017-01-29 10 views
0

У меня проблема с использованием Symfony 3 Компонент ошибки формы. Мне нужно добавить свою собственную ошибку для формирования, но параметры не заменяются значениями.Symfony3 Параметры ошибки формы не работают

$form->get('price')->addError(
    new \Symfony\Component\Form\FormError("Maximal value is %price% %currency%.", 
    null, 
    array('%price%' => 100, '%currency%' => 'YPI'))); 

Я попытался параметры использования с {{ currency }} и {{ price }}, как и в других валидаторов, но до сих пор не работает.

Существует такой способ: http://quedig.com/questions/35271649/symfony-form-error-message-parameters-usage/, но это не лучший способ - я по-прежнему верю в лучшее решение, где я могу использовать классические переводы, не размещая результат перевода.

Что лучше всего использовать для FormError? Руководство Symfony3 не работает.

Спасибо.

ответ

1

Сообщения, переданные конструктору FormError, должны быть переведены. В противном случае они будут показаны как есть. Так что ваш код может выглядеть примерно так:

// $translator should be the "translator" service 
$message = $translator->trans('Maximal value is %price% %currency%.', [ 
    '%price%' => 100, 
    '%currency%' => 'YPI', 
]); 
$form->get('price')->addError(new FormError($message)); 

Кстати, я предлагаю использовать сообщение заполнителей вместо реальных сообщений в качестве строки для перевода (см http://symfony.com/doc/current/best_practices/i18n.html#translation-keys)

+0

Это такое же решение, как я отправил в моем исходном запросе. Но, похоже, нет других решений. Теперь я понятия не имею, почему FormError имеет аргументы, такие как параметры: -D .. – Filip