Kohana验证模型
问题描述:
我是kohana 3.2的新手,我无法找到任何重新验证验证模块的答案。 这是我的代码和最初的原因,因为我将用户模型改为扩展model_auth_user 验证不是按照正确的方式完成的。密码字段可以插入空的,没有错误时抛出将被捕获并同样如果password_confirm和密码字段是不同的:Kohana验证模型
public function action_new()
{
if ($_POST){
try
{
$user = ORM::factory('user')
->values(array(
'username' => $_POST['username'],
'email' => $_POST['email'],
'password' => $_POST['password'],
'password_confirm' => $_POST['password_confirm']));
$user->save();
$user->add('roles', ORM::factory('role', array('name' => 'login')));
$this->request->redirect('user/index');
}
catch (ORM_Validation_Exception $e)
{
$errors = $e->errors();
}
}
$view = View::factory('user/new')
->bind('errors',$errors); //pass the info to the view
$this->response->body($view); //show the view
}
感谢
答
您可以覆盖run_filter()方法来强制Kohana中忽略密码滤波空值的情况。例如,把这段代码到你User_Model:
protected function run_filter($field, $value)
{
if ($field === "password" AND $value === "")
return "";
parent::run_filter($field, $value);
}
答
尝试代码示例从Model_Auth_User :: create_user();
$user->save(Model_User::get_password_validation($_POST)->rule('password', 'not_empty'));
此验证在过滤器(哈希密码)之前执行。哈希之后 - 空白密码变为不空字符串。
请显示Model_User代码。检查它是否有正确的'rules()'方法。 – biakaveron 2013-05-13 05:51:59
无法通过'rules()'创建密码的规则,因为它已经被散列。你需要从'Model_Auth_User'(或者你使用的类扩展Model_Auth_User)检查(并发布)'create_user' – kero 2013-05-13 10:14:42
使用Kohana 3.3。在你的情况下,你可能重新定义了一些原来的'Model_Auth_User'方法或属性,并没有包含父函数或代码。 – 2013-05-13 11:25:58