Validation 如何更改buildRules[CakePHP 3]中的消息?

Validation 如何更改buildRules[CakePHP 3]中的消息?,validation,cakephp,cakephp-3.0,Validation,Cakephp,Cakephp 3.0,下面的功能用于确保来自表单的电子邮件是唯一的,如果它已在使用中,则会显示一条消息。我想更改此消息 public function buildRules(RulesChecker $rules) { $rules->add($rules->isUnique(['username'])); $rules->add($rules->isUnique(['email'])); return $rules; } 我这样试过: public functio

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

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;
}

它可以工作,但会同时显示两条消息,默认消息和我的消息。

使用添加唯一规则的方式时,必须将消息传递给
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',
“邮件”=>“请发送电子邮件给我们。”
]);
另见


谢谢@ndm,我也尝试过类似的方法,但我在消息前面放了“message”=>所以它不起作用。