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

标签 validation cakephp cakephp-3.0

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

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

它有效,但同时显示了两条消息,默认消息和我的消息。

最佳答案

当使用添加唯一规则的样式时,您必须将消息传递给 isUn​​ique() 调用第二个参数,即

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

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

基本上上面就是

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

另见

关于validation - 如何更改 buildRules [CakePHP 3] 中的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794619/

相关文章:

vba - 检查数据验证是否通过

ruby-on-rails - rails - rspec - 为什么这个 "validates_inclusion_of :role, :in => %w[one, two, three ] }"不起作用

cakephp 对于 2 个字段来说是唯一的吗?

cakephp - 将 VueJS 与 CakePHP 3 集成的最佳实践

mysql - CakePHP 3 中的数据透视表

java bean 验证 2.0 与 hibernate validator

ruby-on-rails-3 - Rails 3 - 使文本字段仅接受数字值

mysql - 复制现有的 cakephp 应用程序进行开发

cakephp - 在 cakephp 中加载的第一个文件

mysql - Cakephp 3 - 带限制的缓存查询