Symfony3表单错误参数不起作用

时间:2017-01-29 17:42:28

标签: php forms translation symfony

我使用 Symfony 3 表单错误组件时遇到问题。我需要将自己的错误添加到表单中,但参数不会替换为值。

$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 个答案:

答案 0 :(得分: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