2012-06-29 3 views
0

Я использую библиотеку Codeigniter framework + Tank_Auth. Они отлично работают, но мне просто нужно немного изменить регистрационную форму.Создание имени пользователя из электронной почты с помощью Codeigniter + Tank Auth

Я хочу сгенерировать имя пользователя с адреса электронной почты, а не получать его из формы регистрации. Я добавил простую функцию в библиотеки/Tank_auth.php-файл. Вот мое имя пользователя функция генератора:

function _create_username_from_email($email) 
{ 
$user = strstr($email, '@', true); // As of PHP 5.3.0 
return $user; 
} 
  1. Пожалуйста, дайте мне знать, где мне нужно, чтобы запустить свою функцию и записать его в базу данных.

  2. Мне также нужно удалить поле имени пользователя из формы регистра. Поэтому мне нужно, как я могу передать форму проверки имени пользователя в моем контроллере.

Я буду очень рад, если кто-нибудь из вас поможет мне в решении этой проблемы.

Благодаря

ответ

1

В строке 121 в application/models/tank_auth/users у вас есть:

/** 
* Create new user record 
* 
* @param array 
* @param bool 
* @return array 
*/ 
function create_user($data, $activated = TRUE) 
{ 
    $data['created'] = date('Y-m-d H:i:s'); 
    $data['activated'] = $activated ? 1 : 0; 

    if ($this->db->insert($this->table_name, $data)) { 
     $user_id = $this->db->insert_id(); 
     if ($activated) $this->create_profile($user_id); 
     return array('user_id' => $user_id); 
    } 
    return NULL; 
} 

Непосредственно перед if ($this->db->insert($this->table_name, $data)) { вставки:

$data['username'] = strstr($data['email'], '@', true); 

P.S. Надеюсь, вы это понимаете, но на всякий случай - если у вас есть два или более пользователя с такой же частью имени пользователя электронной почты, как [email protected] и [email protected], они оба будут иметь одинаковое имя пользователя, что может привести к неожиданному поведению.