Kohana3.3自定义Validation验证错误信息

Kohana官方的文档中没有给出Validation自定义错误信息的方法,网上搜索了一下,老外给出了一些例子,不过都是基于ORM的,对ORM不喜,觉得有点过度包装,因此项目中没有使用。

那么没有使用ORM应该如何自定义验证错误信息呢?读了下system下Validation类的源代码终于搞明白了,下面给出代码片段供参考:

$validation = Validation::factory($this->request->post())
->rule(‘mobile’, ‘not_empty’)
->rule(‘mobile’, ‘regex’, array(‘:value’, ‘/^1d{10}$/‘))
->rule(‘password’, ‘not_empty’)
->rule(‘password’, ‘regex’, array(‘:value’, ‘/^[a-zA-Z0-9]{6,16}$/‘));
//验证不通过
if(!$validation->check()) {
$errors = $validation->errors(‘member’);
$this->response->body(View::factory(‘login’)
->bind(‘post’, $post)
->bind(‘errors’, $errors));
}

注意,其中“$errors = $validation->errors(‘member’);”就是获取验证错误提示信息的地方,而errors函数中接收的参数’member’则是说明错误信息从“application/messages”目录下的member.php文件中读取并匹配。需要说明的是这个文件并不是类,所以文件名不需要首字母大写,参数与文件名一致即可。

application/messages/member.php的内容比较简单,返回对应的数组即可。

<?php defined(‘SYSPATH’) OR die(‘No direct script access.’);

return array(
‘mobile’ => array(
‘not_empty’ => ‘手机号码不能为空’,
‘regex’ => ‘手机号码不正确’,
),
‘password’ => array(
‘not_empty’ => ‘密码不能为空’,
‘regex’ => ‘密码长度在6位~16位’,
),
);