Codeigniter将变量从模型返回到控制器

时间:2011-11-17 09:54:52

标签: php codeigniter variables model controller

我正在为注册过程创建激活电子邮件。我需要将包含激活码和电子邮件地址的变量从我的模型传递回我的控制器,我将发送电子邮件。

我的注册表单目前将所有注册数据写入数据库并创建和激活代码。

如何传递变量' activation_code'和'电子邮件'从我的模型回到我的控制器,用于我的电子邮件。

型号:

... 
        $new_member_insert_data = array(
            'first_name' => $first_name,
            'last_name' => $last_name,
            'email_address' => $email,
            'password' => hashPassword($salt, $password, $hash),
            'activation_code' => activationCode($email, $hash.$salt),
            'hash' => $hash
        );

        $insert = $this->db->insert('members', $new_member_insert_data);
        return $insert;
    }

控制器

  $this->load->model('members_model');
                  if($this->members_model->create_member())//return variables here somehow
                    {

//get activation code + email variables
//send activation email
                        $this->session->set_flashdata('success', 'success');
                        redirect('home', 'location');
                    }
                    else
                    {
                        $viewdata['main_content'] = $category;
                        $this->load->view('includes/template', $viewdata);
                    }

1 个答案:

答案 0 :(得分:1)

可以只是在成功时返回值数组,或者在失败时返回FALSE:

$insert = $this->db->insert('members', $new_member_insert_data);
if ($insert) {
    return $new_member_insert_data; // Same data
}
else {
    return FALSE;
}

...但它确实没有意义,因为你必须某些东西传递给模型的方法才能使它有用(或者有权访问事先对这些值中的某些值,您的给定代码是不完整的)。此外,返回不同的数据类型可能会让人感到困惑,而且通常是个坏主意。

尽管此处无法访问您的完整代码,但我认为最安全,最准确的方法可能是在INSERT运行后运行另一个查询。例如,通过email_address查找用户(假设它应该是唯一的)。