Kohana v3.1.0 ORM _ignored_columns - теперь, когда его нет, что мне делать вместо этого? - PullRequest
4 голосов
/ 13 февраля 2011

Кажется, что в v3.1.0 ORM Коханы свойство _ignored_columns было удалено.

Какой метод рекомендуется использовать для обработки полей, которых нет в базах данных?Сейчас у меня есть дело password_confirm, где пароль - это поле, но мы требуем, чтобы пользователь дважды вводил свой пароль.

1 Ответ

4 голосов
/ 13 февраля 2011

Вы можете передать дополнительный объект проверки для сохранения, создания и обновления.Итак, ваш пример будет выглядеть так:

/**
 * 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'));
...