Tank Auth Adding Fields
I've been working with the Tank Auth library all day and have a question about it. I added two fields to the registration form: first_name and last_name respectively and I'm trying to find out why its not inserting into the user_profiles page.
With the updated code I'm getting this error:
A PHP Error was encountered
Severity: Warning
Message: Missing argument 5 for Tank_auth::create_user(), called in /home/xtremer/public_html/kowmanager/application/controllers/auth.php on line 136 and defined
Filename: libraries/Tank_auth.php
Line Number: 162 A PHP Error was encountered
Severity: Notice
Message: Undefined property: Tank_auth::$users
Filena开发者_如何学Cme: libraries/Tank_auth.php
Line Number: 188
Fatal error: Call to a member function UpdateProfileInfo() on a non-object in /home/xtremer/public_html/kowmanager/application/libraries/Tank_auth.php on line 188
Updated Code:
Auth Controller
Tank Auth Library
Users Model
Any ideas on what I am doing wrong now?
I'll put a 50 point bounty on this but I can't get the link to come up so that there is a bounty.
What You should do is put the two columns you want in the user_profiles
table, then add a function to the models/tank_auth/users.php
with something like:
function UpdateProfileInfo ($userID, $firstname, $lastname)
{
return $this->db->update('user_profiles', array('firstname'=>$firstname, 'lastname'=>$lastname), array('user_id' => $userID));
}
Then replace (in /libraries/Tank_auth.php
)
function create_user($username, $email, $password, $email_activation)
With
function create_user($username, $email, $password, $email_activation, $userInfo)
Then right beneath (in /libraries/Tank_auth.php
)
if (!is_null($res = $this->ci->users->create_user($data, !$email_activation))) {
Add
$this->users->UpdateProfileInfo($userInfo["firstname"],$userInfo["lastname"]);
Then replace (in /controllers/auth.php
)
if ($this->form_validation->run()) { // validation ok
if (!is_null($data = $this->tank_auth->create_user(
$use_username ? $this->form_validation->set_value('username') : '',
$this->form_validation->set_value('email'),
$this->form_validation->set_value('password'),
$email_activation))) { // success
with:
$userInfo["firstname"] = $this->form_validation->set_value("firstname");
$userInfo["lastname"] = $this->form_validation->set_value("lastname");
if ($this->form_validation->run()) { // validation ok
if (!is_null($data = $this->tank_auth->create_user(
$use_username ? $this->form_validation->set_value('username') : '',
$this->form_validation->set_value('email'),
$this->form_validation->set_value('password'),
$email_activation, $userInfo))) { // success
This isn't tested though it should work, tell me how it goes
Max
I noticed a couple things:
private function create_profile($user_id, $data)
{
$this->db->set('user_id', $user_id);
$this->db->set('first_name', $first_name);
$this->db->set('last_name', $last_name);
return $this->db->insert($this->profile_table_name);
}
$data
is an array, I'm assuming you SHOULD pass first_name
and last_name
here (which you do not).
Also TANK AUTH requires you to updated the columns you need for profile database schema (did you do this? didn't mention).
To correct the code above, you would need to pass more details in the array ($data
) like so:
$data['first_name'] = "Bob";
$data['last_name'] = "Smith";
create_profile($user_id, $data); // which would then use the first & last names
Not that I want to keep a conversation going about this but...*
You need to do just what I showed you:
- define 2 variables (first & last name) and pass them to the
create_profile
fn. - properly USE the variables (don't use
$data[0]
that is SLOPPY, do$data['first_name']
if that is what you called the array value. There is no reason to be sloppy and do $data[0] -- guessing no less at the key value of your array). - its not hard, read your code (understand it, if you don't then step back and try to break it down line by line what is happening, I am getting the sense you have NO idea what any of these functions are doing).
Check the Tank_auth file in the library, there is another "create_user" function that you have to modify. To manage properly the variables. 3 hours breaking my head with this.
精彩评论