唯一实体消息

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 对我不起作用。有什么诀窍吗?

以上是关于唯一实体消息的主要内容,如果未能解决你的问题,请参考以下文章

基于实体属性确保 CoreData 实体唯一的最佳实践

无法在实体框架中更新具有唯一约束索引的实体

Restkit 是不是通过 CoreData Sqlite 处理实体唯一性?

实体框架代码中的唯一约束

在一天内为实体生成唯一的序列号

实体框架中多列的唯一键约束