【问题标题】:How to change the message in buildRules [CakePHP 3]?如何更改 buildRules [CakePHP 3] 中的消息?
【发布时间】:2015-06-12 02:52:53
【问题描述】:

下面的功能是为了确保来自表单的电子邮件是唯一的,如果它已经在使用中,则会显示一条消息。我想更改此消息。

public function buildRules(RulesChecker $rules)
{
    $rules->add($rules->isUnique(['username']));
    $rules->add($rules->isUnique(['email']));
    return $rules;
}

我试过这样:

 public function buildRules(RulesChecker $rules)
 {
     $rules->add($rules->isUnique(['username']));
     $rules->add($rules->isUnique(['email']), 
         ['errorField' => 'email', 'message' => 'Este email já encontra-se em uso.']
     );
     return $rules;
}

它可以工作,但是两条消息都显示了,默认的和我的。

【问题讨论】:

    标签: validation cakephp cakephp-3.0


    【解决方案1】:

    当使用这种添加独特规则的风格时,您必须将消息传递给 isUnique() 调用第二个参数,即

    $rules->add($rules->isUnique(['email'], 'Este email já encontra-se em uso.'));
    

    这是因为您在技术上以这种方式创建嵌套的可调用对象($rules->isUnique() 创建一个,$rules->add() 创建另一个),并且在 add() 调用中定义选项将导致它们在外部可调用对象中设置,最后导致设置了两条消息,一条是您为外部可调用设置的,另一条来自内部可调用的。

    基本上上面是简写

    $rules->add(new \Cake\ORM\Rule\IsUnique(['email']), [
        'errorField' => 'email',
        'message' => 'Este email já encontra-se em uso.'
    ]);
    

    另见

    【讨论】:

    • 谢谢@ndm,我也尝试过类似的方法,但我在消息前加上了'message'=>,所以它不起作用。
    猜你喜欢
    • 2019-03-24
    • 2016-05-17
    • 2016-09-30
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多