【问题标题】:How do I load a model method into a controller constructor in CodeIgniter?如何将模型方法加载到 CodeIgniter 中的控制器构造函数中?
【发布时间】:2013-06-05 05:08:25
【问题描述】:

我正在尝试扩展 CI_Controller 类来加载我的全局页面头文件,这样我就不必在每个控制器方法的开头加载它。它似乎不起作用。我知道控制器扩展本身可以工作......如果我从构造函数中删除模型方法的调用并从我的控制器方法中加载它,控制器扩展的其余部分工作正常。但是当我从控制器扩展的构造函数中加载模型方法时,我得到一个空白页面(我还没有生成主要内容)。

有什么想法吗?

应用程序/核心/MY_Controller.php

<?php
class MY_Controller extends CI_Controller {

    var $user = array();

    function __construct(){

        parent::__construct();
        $this->load->model('member');

        if($this->session->userdata('member_id')){

            $this->member->get_info($this->session->userdata('member_id'));
            $this->user = $this->member->info;
            $this->member->update_activity($this->session->userdata('member_id'));

        } else {

            $this->load->helper('cookie');

            if(get_cookie('Teacher Tools Member Cookie')){

                $this->member->auto_login(get_cookie('Teacher Tools Member Cookie'));

            } else {

                $this->user = $this->member->default_info();
            }

        }

        $this->load->model('template');
        $this->template->overall_header();
    }
}

应用程序/模型/模板.php

<?php

class Template extends MY_Model {

    function __construct(){

    parent::__construct();

}

function overall_header($title = 'Home'){

    $data = array(
        'BASE_URL' => base_url(),
        'MAIN_NAVIGATION' => $this->main_navigation(),
        'TOOLBAR' => $this->toolbar()
    );

    return $this->parser->parse('overall_header.tpl', $data);

}

MY_Model 是 CI_Model 类的扩展,用于将成员信息加载到 $this->user。

【问题讨论】:

  • 也发布member model代码

标签: codeigniter model constructor


【解决方案1】:

我认为响应生成是在 Controller 的方法中完成的,并且您可能已经粘贴了所有 HTML 片段。因此,如果您调用/controller/method_a,那么method_a 将负责返回响应,而在构造函数中您无法设置响应。

我同意你在构造函数中设置一次重要数据,这样你就不必在每个方法中一次又一次地这样做。我认为您应该将输出分配给某个控制器级别 variable,然后在控制器的方法中使用该 variable

我相信你明白我的意思。

【讨论】:

    【解决方案2】:

    因此有一个 config/autoload.php:

    $autoload['model'] = array('YourModel');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多