【问题标题】:codeigniter how can I manage objects from mother controller to two child controllercodeigniter 如何管理从母控制器到两个子控制器的对象
【发布时间】:2013-01-14 20:33:07
【问题描述】:

我为分页创建了 2 个控制器,为模型创建了 1 个控制器,为数据库创建了一个模型。和 2 个控制器扩展到其他控制器。像这样

class MY_Data extends CI_Controller{
     public $layout;
     public $xe_member;
     public $member_srl;
     public $is_logged_in = FALSE;
     public $is_registerd = false;
     public $director = array();
     public $fighters = array();
     public $logged;

    function __construct(){
         parent::__construct();
         $this->load->model('member_login');
         $this->load->model('db_log');
         $this->layout = 'include/template';
    }
    function load_data(){
         $this->xe_member = $this->member_login->member_check();
         $this->member_srl = $this->xe_member['member_srl'];
         $this->is_logged_in = $this->xe_member['is_logged'];
         $this->is_registerd = $this->member_login->register_check
                              ($this->member_srl);
         if($this->is_registerd){
            $this->director = $this->db->where('member_srl', $this->member_srl)->
            limit(1)->get('fc_directors')->row();
            $this->fighters = $this->db->where('member_srl', $this->member_srl)->
            get('fc_fighters')->result();
         }
     }
}

登录

class Login extends MY_Data {
public function __construct()
{
    parent::__construct();
    $this->load->model('member_login');
}
public function index()
{
    if (isset($_COOKIE['PHPSESSID'])) {
        $data['PHPSESSID'] = $_COOKIE['PHPSESSID'];
    }else {
        $this->load->view('include/template', 'login_error');
        die();
    }
    $this->load_data();

    if($this->is_logged_in)
    {

        if ($this->is_registerd) {

            $data['log'] = $this->db_log->read_all_log();
            $data['main_contents'] = 'main/main';
            $this->load->view('include/template', $data);
        } else {

            redirect('registration');
        }
    } else {
        $data['main_contents'] = 'login_error';
        $this->load->view('include/template', $data);
    }

}

和主要的

class Main extends MY_Data {
function __construct() {
    parent::__construct();
}
function index(){
    if(!$this->logged){
        $data['main_contents'] = 'login/login_button';
        $this->load->view($this->layout,$data);
    }else {
        $data['main_contents'] = 'main/main';
        $this->load->view($this->layout,$data);             
    }
}

我知道这不是完美的代码,但是... 我想在这里做什么:
第一次调用登录到 db_data 将提取对象中的数据库存储并主要显示对象。但是在使用 main 时,我总是从母控制器得到 null。

我只是将控制器对象用于其他控制器。

我该怎么做?

【问题讨论】:

    标签: php codeigniter controller


    【解决方案1】:

    Main函数索引的第一行不应该是

    parent::index(); 
    

    我猜你想扩展你在登录类中的索引函数。

    现在父类中的索引没有被执行,下面的行也没有被调用:

    $this->load_data()  
    

    其中包含

    $this->member_login->member_check();
    

    这能解决你的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多