Codeigniter MY_loader未加载

时间:2017-02-16 04:08:33

标签: php codeigniter codeigniter-3

我正在尝试在CodeIgniter中创建一个类似于以下所述的标题/正文/页脚模板: Header and footer in CodeIgniter

我的代码存储在\ application \ core \ MY_loader.php:

<?php
class MY_Loader extends CI_Loader {

    public function load_template($template_name, $vars = array(), $return = FALSE)
    {
        if($return):
            $content  = $this -> view('templates/header', $vars, $return);
            $content .= $this -> view($template_name, $vars, $return);
            $content .= $this -> view('templates/footer', $vars, $return);

            return $content;

        else:
            $this -> view('templates/header', $vars);
            $this -> view($template_name, $vars);
            $this -> view('templates/footer', $vars);

        endif;
    }
}
?>

我的控制器代码存储在application \ controllers \ managers.php:

class Managers extends CI_Controller {
    function login()
    {
        $this -> load -> load_template('managers/login');
    }
}

当我浏览BASE_URL / managers / login时,出现此错误:

调用未定义的方法CI_Loader :: load_template()

我对此的解释是系统没有使用MY_Loader扩展CI_Loader,而是完全忽略MY_Loader。当我在XAMPP下运行时,此设置正在我的本地安装站点上工作,但在我将站点移植到Web主机后它停止工作。我不记得更改CI配置(虽然我可能有),也不知道这是否是由于新主机上的配置问题造成的。

我正在寻找任何可能阻止MY_loader扩展CI_loader的指导。我还没有找到类似的报道;我发现与MY_loader相关的所有其他问题都假设覆盖已经有效。

2 个答案:

答案 0 :(得分:1)

该文件必须被称为“MY_Loader.php” - 它区分大小写,与“MY_loader.php”不同。

与此时唯一的其他答案相反,“My_loader.php”也不起作用,因为subclass_prefix与库名称分开应用。

最简单的例子就是:

$libraryName = 'loader';

$className   = ucfirst(strtolower($libraryName));
$className   = config_item('subclass_prefix').$className;

$fileName    = $className.'.php';

答案 1 :(得分:0)

另存为MY_Loader.php(感谢其他朋友的建议&#34; L&#34;也必须是大写字母)     

    public function load_template($template_name, $vars = array(), $return = FALSE)
    {
        $CI = & get_instance();
        if($return):
            $content  = $CI->load->view('templates/header', $vars, $return);
            $content .= $CI->load->view($template_name, $vars, $return);
            $content .= $CI->load->view('templates/footer', $vars, $return);

            return $content;

        else:
            $CI->load->view('templates/header', $vars);
            $CI->load->view($template_name, $vars);
            $CI->load->view('templates/footer', $vars);

        endif;
    }
}
?>

我希望我能提供帮助。祝你有愉快的一天。