开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜