在我使用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');
}
//...
答案 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);