Kohana 3.2一个模型或字段的自定义验证错误消息

时间:2012-01-13 22:57:10

标签: php kohana

我在application/messages/validation.php中有我的常规验证消息,当我验证用户模型的'密码'字段时,我需要自定义消息。这是我的初始代码:

try
{
  ORM::factory('user', Auth::instance()->get_user())->update_user($values);
}
catch (ORM_Validation_Exception $e)
{
  $errors = Arr::merge($errors, $e->errors(TRUE));
  if (Arr::get($errors, '_external'))
  {
    $errors = Arr::merge($errors, Arr::get($errors, '_external'));
    unset($errors['_external']);
  }
}

我尝试了:$e->errors('')$e->errors(),将application/messages/validation.php复制到application/messages/user.php,将'password' => array('regex' => 'message')放在这些文件中,我尝试混合所有可能性这个。我阅读了异常类的源代码,但我无法理解什么是错的。根据{{​​3}}帖子,它可以做到,但对我来说没那么有效。 我很感激帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

我认为ORM_Validation_Exception->generate_errors()中存在错误。您要做的事情应该像调用$e->errors('validation')一样简单,消息来自application/validation/user.php(它会附加ORM模型别名)。

我还没有报道,但我认为this bug report无论如何都会触及它。希望它得到修复。

modules/orm/classes/kohana/orm/validation/exception.php中,将第153行更改为$errors[$key] = $this->generate_errors( $alias , $object, $directory, $translate);

希望这有帮助

答案 1 :(得分:0)

如果有验证功能,可以在APPPATH / messages / validation.php中尝试。

return array(
   'password' => 'your password text' // this way it will always be replaced
   'Model_User::password' => 'your custom password message' // And here just for the Model_User
);