Symfony 表单错误信息参数使用
Symfony form error message parameters usage
Symfony 表单错误中消息参数数组的用途是什么?
例如,我有以下情况:在我有一个订户的表单上,根据用户提供的信息,可以调用 API 并且可以将一些额外的错误添加到Symfony 形式。
因此,当发生错误时,我在字段上添加了一个新错误:
$myForm->get('name')->addError(
new FormError('name.api_invalid', null, array('{{ api_name }}' => $someValue))
);
其中 'name.api_invalid' 在 message.en.yml 中定义为
name.api_invalid: "The API says the name is actually {{ api_name }}. Please fix before proceeding."
翻译消息时,"parameters" 不会被替换。
这不是表单错误参数应该如何工作的吗?
注意:我可以使用
让它工作
$myForm->get('name')->addError(
new FormError(
$this->translator->trans('name.api_invalid', array('{{ api_name }}' => $someValue))
)
);
不过我真的很好奇那些错误参数。
谢谢!
您看到的行为是 changed in Symfony 2.2:
Translating validation errors is now optional. You can still do so manually if you like, or you can simplify your templates to simply output the already translated message.
如果您查看 form_errors
block in 2.1 vs. the form_errors
block in 2.2,您会发现错误显示方式的不同。您可以覆盖该块并以旧方式进行操作,然后在任何需要的地方导入该模板,或者您可以按照上面的方式简单地翻译错误消息(这是我通常这样做的方式并且完全可以接受).
如果您要走 $translator->trans
的路线,那么我会在参数中使用 %..%
,如 Symfony documentation:
中所述
The placeholders can take on any form as the full message is reconstructed using the PHP strtr function. But the %...% form is recommended, to avoid problems when using Twig.
您正在使用的 {{ }}
更倾向于使用 Symfony 验证器以及它们如何构建违规 (example here)。
现在,如果您希望自动翻译您的消息和参数而无需手动抛出 FormError
,那么我只建议为您尝试做的任何事情创建一个自定义验证器,并在那里构建消息。否则,只需按照您已经理解的方式手动翻译即可。
Symfony 表单错误中消息参数数组的用途是什么?
例如,我有以下情况:在我有一个订户的表单上,根据用户提供的信息,可以调用 API 并且可以将一些额外的错误添加到Symfony 形式。
因此,当发生错误时,我在字段上添加了一个新错误:
$myForm->get('name')->addError(
new FormError('name.api_invalid', null, array('{{ api_name }}' => $someValue))
);
其中 'name.api_invalid' 在 message.en.yml 中定义为
name.api_invalid: "The API says the name is actually {{ api_name }}. Please fix before proceeding."
翻译消息时,"parameters" 不会被替换。
这不是表单错误参数应该如何工作的吗?
注意:我可以使用
让它工作$myForm->get('name')->addError(
new FormError(
$this->translator->trans('name.api_invalid', array('{{ api_name }}' => $someValue))
)
);
不过我真的很好奇那些错误参数。
谢谢!
您看到的行为是 changed in Symfony 2.2:
Translating validation errors is now optional. You can still do so manually if you like, or you can simplify your templates to simply output the already translated message.
如果您查看 form_errors
block in 2.1 vs. the form_errors
block in 2.2,您会发现错误显示方式的不同。您可以覆盖该块并以旧方式进行操作,然后在任何需要的地方导入该模板,或者您可以按照上面的方式简单地翻译错误消息(这是我通常这样做的方式并且完全可以接受).
如果您要走 $translator->trans
的路线,那么我会在参数中使用 %..%
,如 Symfony documentation:
The placeholders can take on any form as the full message is reconstructed using the PHP strtr function. But the %...% form is recommended, to avoid problems when using Twig.
您正在使用的 {{ }}
更倾向于使用 Symfony 验证器以及它们如何构建违规 (example here)。
现在,如果您希望自动翻译您的消息和参数而无需手动抛出 FormError
,那么我只建议为您尝试做的任何事情创建一个自定义验证器,并在那里构建消息。否则,只需按照您已经理解的方式手动翻译即可。