uniqueEntity消息

时间:2013-12-02 12:44:05

标签: symfony

我已经用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 %}

非常感谢

1 个答案:

答案 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]]);