我已经用symfony 2创建了一个表单,然后我检查字段是否与UniqueEntity约束是唯一的。但我希望字段“firstname”,“name”出现在消息中,如:
“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;
twig file
{{ 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 %}
非常感谢
答案 0 :(得分:0)
理论上,您可以在错误消息{{value}}中使用它,这将代表发送的值。我在emailconstraint中使用它,'The {{ value }} email address already in use'
。
我认为这对你也有用。
我重新检查了你的约束,遗憾的是,你没有设置动态值的选项。我之前发布的是一个真正的symfony验证的解决方案,这个约束是学说的一部分。但是,如果您想满足您的特殊需求,您可以随时创建自己的约束: $ this-&gt; context-&gt; addViolationAt($ errorPath,$ constraint-&gt; message,array(),$ criteria [$ fields [0]]);