Tank Auth添加字段

时间:2011-08-15 20:19:21

标签: php codeigniter

我整天都在使用Tank Auth图书馆并对此有疑问。我在注册表单中添加了两个字段:first_name和last_name,我试图找出它为什么不插入user_profiles页面。

使用更新的代码我收到此错误:

  

遇到PHP错误

     

严重性:警告

     

消息:缺少Tank_auth :: create_user()的参数5,在第136行的/home/xtremer/public_html/kowmanager/application/controllers/auth.php中调用并定义

     

文件名:libraries / Tank_auth.php

     

行号:162   遇到PHP错误

     

严重性:注意

     

消息:未定义属性:Tank_auth :: $ users

     

文件名:libraries / Tank_auth.php

     

行号:188

     

致命错误:在第188行的/home/xtremer/public_html/kowmanager/application/libraries/Tank_auth.php中的非对象上调用成员函数UpdateProfileInfo()

更新代码:

Auth Controller

Tank Auth Library

Users Model

关于我现在做错了什么想法?

我会在这方面给予50点奖励,但我无法获得链接,以便获得赏金。

3 个答案:

答案 0 :(得分:8)

您应该做的是将所需的两列放在user_profiles表中,然后使用以下内容向models/tank_auth/users.php添加一个函数:

function UpdateProfileInfo ($userID, $firstname, $lastname)
{
    return $this->db->update('user_profiles', array('firstname'=>$firstname, 'lastname'=>$lastname), array('user_id' => $userID)); 
}

然后替换(在/libraries/Tank_auth.php
function create_user($username, $email, $password, $email_activation)
随着
function create_user($username, $email, $password, $email_activation, $userInfo)

然后在(/libraries/Tank_auth.php)下面 if (!is_null($res = $this->ci->users->create_user($data, !$email_activation))) { 添加
$this->users->UpdateProfileInfo($userInfo["firstname"],$userInfo["lastname"]);

然后替换(在/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

使用:

$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

虽然它应该有用,但是没有经过测试,请告诉我它是怎么回事 最大

答案 1 :(得分:2)

我注意到了几件事:

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是一个数组,我假设你应该在这里传递first_namelast_name(你没有)。

此外,TANK AUTH要求您更新配置文件数据库架构所需的列(您是否这样做了?没有提及)。

要更正上面的代码,您需要在数组中传递更多详细信息($data),如下所示:

$data['first_name'] = "Bob";
$data['last_name']  = "Smith";

create_profile($user_id, $data); // which would then use the first & last names 

并不是说我想就此进行对话,但...... *

你需要做我给你看的东西:

  • 定义2个变量(名字和姓氏)并将它们传递给create_profile fn。
  • 正确使用变量(不要使用SLOPPY $data[0],如果这就是你所谓的数组值那么$data['first_name']。没有理由邋and并做$ data [0 ] - 不要猜测数组的键值。)
  • 它并不难,请阅读你的代码(了解它,如果你没有然后退后一步,尝试逐行分解正在发生的事情,我感觉到你不知道这些功能是什么这样做)。

答案 2 :(得分:1)

检查库中的Tank_auth文件,还有另一个“create_user”函​​数需要修改。妥善管理变量。 用这个来打扰我3个小时。