唯一实体消息
Posted
技术标签:
【中文标题】唯一实体消息【英文标题】:uniqueEntity message 【发布时间】:2013-12-18 04:24:46 【问题描述】:我已经使用 symfony 2 创建了一个表单,并且我使用 UniqueEntity 约束检查这些字段是否是唯一的。但我希望字段“名字”、“姓名”出现在消息中,例如:
“Mark Blaze 已经存在!”而不是“这个人已经存在!”
有人可以帮忙吗?
表单构建器的一部分
public function buildForm(FormBuilderInterface $builder, array $options)
$builder
->add('firstname')
->add('name')
实体
/**
* @ORM\Entity
* @ORM\Entity(repositoryClass="InviteRepository")
* @UniqueEntity(fields="firstname","name", message="this person already exists!")
*/
class Invite
/**
* @ORM\Column(type="string",length=50)
*/
private $firstname;
/**
* @ORM\Column(type="string",length=50)
*/
private $name;
树枝文件
form_start(form)
form_errors(form)
% spaceless %
<div class="control-group">
form_label(form.firstname, 'firstname *', 'label_attr': 'class':'control-label' )
form_errors(form.firstname)
<div class="controls">
form_widget(form.firstname)
% if form.vars.help is defined %
<span class="help-block"> form.vars.help </span>
% endif %
</div>
</div>
% endspaceless %
% spaceless %
<div class="control-group">
form_label(form.name, 'name *', 'label_attr': 'class':'control-label' )
form_errors(form.name)
<div class="controls">
form_widget(form.name)
% if form.vars.help is defined %
<span class="help-block"> form.vars.help </span>
% endif %
</div>
</div>
% endspaceless %
非常感谢
【问题讨论】:
在最坏的情况下,你可以实现自己的Custom Validation Constraint 【参考方案1】:理论上,您可以在错误消息 value 中使用它,这将代表发送的值。我在电子邮件约束中使用它,所以'The value email address already in use'
。
我想这对你也有用。
我重新检查了您的约束,遗憾的是,您无法选择设置动态值。我之前发布的是一个真正 symfony 验证的解决方案,这个约束是原则的一部分。但是,如果您想满足您的特殊需求,您可以随时创建自己的约束: $this->context->addViolationAt($errorPath, $constraint->message, array(), $criteria[$fields[0]]);
【讨论】:
嗨,感谢您的回复,我已经尝试过您的解决方案,如下所示:@UniqueEntity(fields="mail", message=" mail already exists") the unique Entity约束工作完美,但它不显示已发送的电子邮件。它显示: mail 已经存在。你能告诉我适用于你的整个代码吗?也许不一样。 我有我复制的内容,变量的名称必须是 value @ghostika - 在消息中输入 value
对我不起作用。有什么诀窍吗?以上是关于唯一实体消息的主要内容,如果未能解决你的问题,请参考以下文章