我正在尝试在 Twig 中自定义此错误消息“已有一个帐户”的显示。
这是表单类中的相关代码:
->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”之类的红色消息(位于文本字段下方)。 那么,我的代码有什么问题吗?有什么想法吗?
经过更多研究,我们发现可以在用户类中的
@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")
*/
导致验证错误消息实际被相应修改。
由于 TextType 扩展了 FormType 类,您应该能够定义自定义无效消息属性。 Symfony 将尝试通过在验证器翻译中搜索来解析给定的标识符,或者如果找不到匹配的翻译,则仅使用给定的文本。请参阅表单类型字段了解更多信息。
->add('cin', TextType::class, [
'required' => true,
'invalid_message' => 'Invalid card ID'
])
将无效消息更改为此将导致 twig 呈现自定义消息。在上面的示例中,我只是将所需的参数作为选项添加到 TextType。