首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在控制器和模型之间移动数据- Codeigniter最佳实践

在控制器和模型之间移动数据- Codeigniter最佳实践
EN

Stack Overflow用户
提问于 2013-12-08 04:26:11
回答 2查看 1.1K关注 0票数 0

对于这个简单的问题,我很抱歉,但是假设我正在使用Ion-Auth和Codeigniter来区分已登录和未登录的用户。

我有一个简单的自定义控制器来捕获用户的ID:

代码语言:javascript
复制
class MY_Controller extends CI_Controller {
     function __construct() {
        parent::__construct();
        global $data;
            if($this->ion_auth->logged_in()){
            $data['logged'] = True;
            $data['uid'] = $this->ion_auth->get_user_id();
            $data['username'] = $this->ion_auth->get_username();
        }

        //User is Not Logged in
        else{
            $data['logged'] = False;
        }
    }
}

然后,对于我的任何常规控制器,我想为登录的用户和不登录的用户显示一个页面。

代码语言:javascript
复制
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends MY_Controller {
        {
        global $data;
            if($data['logged']) {
                $this->load->view('logged_in', $data);
                }
            else{
                $this->load->view('not_logged_in', $data);
            }   
        }
}

我的问题是,我应该如何将uid传递给我的模型?其中一些模型是由默认CI控制器调用的,该控制器不调用$this->ion_auth->get_user_id();函数。我应该进入这些默认控制器并将uid传递给模型,还是应该直接在模型中调用函数$this->ion_auth->get_user_id();

我很抱歉造成任何混淆,我只是有一堆需要或不需要user_id的控制器和模型,并且正在努力避免对每一个都进行硬编码。

EN

回答 2

Stack Overflow用户

发布于 2013-12-08 04:58:28

您不需要在模型中加载库,模型总是从控制器中调用,因此您只需在控制器中加载库,并且函数将在从控制器调用的模型中可用

所以代码

代码语言:javascript
复制
$this->ion_auth->get_user_id()

将在控制器加载的所有模型中工作

票数 0
EN

Stack Overflow用户

发布于 2013-12-08 05:00:06

你可以做任何一件事。

我尽量将user_id发送到数组中的模型(就像您一样)。它使模型更清晰,更容易为我阅读。

例如:

代码语言:javascript
复制
  $data['uid'] = $this->ion_auth->get_user_id();
  $model_results = $this->some_model->get_data($data);

但如果需要,您可以通过CI实例进行访问

使用以下命令启动模型

代码语言:javascript
复制
function __construct()
{
    parent::__construct();

    $ci =& get_instance();

}

然后我可以访问user_id,如下所示:

代码语言:javascript
复制
 $user_id = $CI->ion_auth->get_user_id();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20446206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档