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

时间:2015-06-12 02:52:54

标签: validation cakephp cakephp-3.0

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

{
  "return_seeds": [
    {
      "prevalence": "2.803636",
      "result": "penicillin"
    },
    {
      "prevalence": "2.748252",
      "result": "plan: 1"
    },
    {
      "prevalence": "2.685714",
      "result": "actos"
    },
    {
      "prevalence": "2.670330",
      "result": "lipitor"
    },
    {
      "prevalence": "2.649351",
      "result": "zocor"
    },
    {
      "prevalence": "1.400000",
      "result": "ibuprofen 200 mg three pills"
    },
    ...
  ]
}

我试过这种方式:

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

它有效,但两个消息都被显示,默认消息和我的消息。

1 个答案:

答案 0 :(得分:7)

使用这种添加唯一规则的方式时,您必须将消息传递给isUnique()调用第二个参数,即

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

这是因为您在技术上以这种方式创建嵌套的callable($rules->isUnique()创建一个,$rules->add()创建另一个),并在add()调用中定义选项将导致它们成为在外部callable中设置,最后导致设置两个消息,即为外部callable设置的消息,以及内部callable中的默认消息。

基本上上面是

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

另见