gpt4 book ai didi

php - Symfony 表单错误信息参数使用

转载 作者:搜寻专家 更新时间:2023-10-31 21:04:17 24 4
gpt4 key购买 nike

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."

在翻译消息时,“参数”不会被替换。

这不是表单错误参数应该如何工作的吗?

注意:我可以使用

让它工作
$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.1form_errors block in 2.2您将看到错误显示方式的不同。您可以覆盖该 block 并以旧方式进行操作,然后在任何需要的地方导入该模板,或者您可以按照上面的方式简单地翻译错误消息(这是我通常这样做的方式并且完全可以接受).

如果您要走 $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 Validators 以及它们如何构建违规 (example here)。

现在,如果您希望自动翻译您的消息和参数而无需手动抛出 FormError,那么我只是建议为您尝试做的任何事情创建一个自定义验证器,并在那里构建消息.否则,只需按照您已经理解的方式手动翻译即可。

关于php - Symfony 表单错误信息参数使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35271649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com