Вы можете передать дополнительный объект проверки для сохранения, создания и обновления.Итак, ваш пример будет выглядеть так:
/**
* Password validation for plain passwords.
*
* @param array $values
* @return Validation
*/
public static function get_password_validation($values)
{
return Validation::factory($values)
->label('password', 'password')
->label('password_confirm', 'repeat password')
->rule('password', 'not_empty')
->rule('password', 'min_length', array(':value', 8))
->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));
}
/**
* Create user account
*
* @param array $values
* @param array $keys
* @throws ORM_Validation_Exception
*/
public function create_user($values, $keys)
{
$external = Model_User::get_password_validation($values);
$this->values($values, $keys);
return $this->create($external);
}
Обратите внимание, как проверка пароля передается в метод create.
Значение $keys
указывает, какие значения должны быть сохранены в модели.«password_confirm» не было в этом списке, поэтому он игнорируется.Эта функция также связана с безопасностью, вы не хотите, чтобы пользователи вручную устанавливали идентификатор в своем запросе POST.
Затем вы можете создать пользователя, позвонив create_user
:
$user->create_user($_POST, array('username', 'email', 'password'));