如何在 Twig 中自定义 "There is already an account with this" 消息的显示

How to customize the display of "There is already an account with this" message in Twig

我正在尝试在 Twig 中自定义此错误消息“已经有一个帐户”的显示。

这是class:

形式的相关代码
->add('cin', TextType::class, [
            'required' => true,
        ])

这里是相关的 HTML/Twig 代码:

<div class="form-outline">
   {{ form_row(registrationForm.cin ,{'label':false,'attr':{'placeholder':'Numéro carte d\'identité', 'name':'cin', 'class':'form-control', 'id':'cin', 'type':'number', 'minlength':'8', 'maxlength':'8', 'required data-error':'Veuillez saisir votre numéro de carte d\'identité', } } ) }}
   <span style="color: red">{{ form_errors(registrationForm.cin) }}</span>
</div>

如果出现错误,我会在屏幕上看到以下内容:

但是,我想要得到的只是自定义为“无效卡 ID”之类的红色消息(位于文本字段下方)。 那么,我的代码有什么问题?有什么想法吗?

由于 TextType 扩展了 FormType class,您应该能够定义自定义的无效消息属性。 Symfony 将尝试通过在验证器翻译中搜索来解析给定的标识符,或者如果找不到匹配的翻译则只使用给定的文本。有关详细信息,请参阅 FormType Field

->add('cin', TextType::class, [
    'required' => true,
    'invalid_message' => 'Invalid card ID'
])

将无效消息更改为此将导致 twig 呈现自定义消息。在上面的示例中,我只是将必需的参数作为选项添加到 TextType。

经过更多研究后,我们发现可以在用户 class 的 @UniqueEntity 验证程序中更改错误消息。

更改当前验证器
/**
* @ORM\Entity(repositoryClass=UserRepository::class)
* @UniqueEntity(fields={"cin"}, message="There is already an account with this cin")
*/

/**
* @ORM\Entity(repositoryClass=UserRepository::class)
* @UniqueEntity(fields={"cin"}, message="Invalid card id")
*/

导致验证错误消息被相应修改。