【问题标题】: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 %}

非常感谢

【问题讨论】:

标签: symfony


【解决方案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 }} 对我不起作用。有什么诀窍吗?
猜你喜欢
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多