在Symfony表单错误中,消息参数数组的目的是什么?
例如,我有以下情况:在一个表单上,我有一个订阅者,根据用户提供的信息可能会调用API,并向Symfony表单添加一些附加错误。
因此,当出现错误时,我会在字段上添加一个新的错误:
$myForm->get('name')->addError(
new FormError('name.api_invalid', null, array('{{ api_name }}' => $someValue))
);
在message.en.yml文件中,'name.api_invalid'被定义为
name.api_invalid: "The API says the name is actually {{ api_name }}. Please fix before proceeding."
尽管消息被翻译,但是"参数"并没有被替换。
这难道不是表单错误参数应该工作的方式吗?
注意:使用<code></code>可以使其正常工作。
$myForm->get('name')->addError(
new FormError(
$this->translator->trans('name.api_invalid', array('{{ api_name }}' => $someValue))
)
);
但我真的很好奇那些错误参数是什么。谢谢!
{{ api_name }}
替换为%api_name%
,这更符合Symfony的约定和参数使用方式。你目前使用的翻译信息看起来像Twig变量,但实际上并不是。 - Jason Roman{{ api_name }}
,因为这也是Symfony约束消息中使用变量的方式(http://symfony.com/doc/current/reference/constraints/Length.html)。尝试使用%代替,但仍然没有运气。无论如何,最终这只是一个标记,所以每个开发人员喜欢的语法都应该可以工作...但事实并非如此 :) - medowlock