更新期间的kohana验证

时间:2014-04-20 17:45:40

标签: php kohana

在我使用Kohana开发的应用程序中,我有一个表单,用户输入他们的注册信息,我的规则正确执行,如果用户忽略重要字段或以不适当的形式输入电子邮件地址,则错误消息正确显示。

问题是我希望在稍后的时间点执行相同的验证,但是我想忽略密码字段,这些字段在表单加载时通常为空。

  • 是否真的可以让kohana忽略空白密码值 在更新?

  • 我使用以下代码更新用户数据,我看不到 我使用时执行验证(在我的Model_User中定义) 验证update_user()有人可以说清楚 阻碍验证程序执行的潜在问题
    这里吗?

if(Auth::instance()->logged_in()) {
    $values =  array();
    $now = new DateTime();
     $userobj = Auth::instance()->get_user();

    //$userobj->updatedon = $now->format('Y-m-d H:i:s'); // need research
    try {
        $userobj->update_user($_POST, array('email',
                                            'password',
                                            'firstname',
                                            'secondname',
                                            'lastname',
                                            'phone',
                                            'city_id'
        ));
        $values = Auth::instance()->get_user()->as_array();
    } catch (ORM_Validation_Exception $e) {
         $errors = $e->errors('models');
    }
    //...

1 个答案:

答案 0 :(得分:0)

这不应该是一个问题。注册用户时,请务必使用create_user()并将密码特定规则添加到get_password_validation()

现在,逻辑仅适用于注册,而不适用于更新现有用户。

此外,如果您不想更新password,请务必将其从列表中删除。

$updateColumns = array('email', 'password', ...);
if ( ! isSet($_POST['password']) || trim($_POST['password']) == "") {
    unset($updateColumns[1]);
}
$userobj->update_user($_POST, $updateColumns);