Codeigniter MY_loader 未加载
Posted
技术标签:
【中文标题】Codeigniter MY_loader 未加载【英文标题】:Codeigniter MY_loader is not loading 【发布时间】:2017-07-05 00:30:38 【问题描述】:我正在尝试在 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 相关的所有其他问题都假定覆盖已经起作用。
【问题讨论】:
将文件另存为MY_Loader.php
。
该文件已使用该名称保存。
抱歉...我错过了“Loader”的大写字母。你是对的。
【参考方案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';
【讨论】:
【参考方案2】:将此另存为MY_Loader.php(感谢其他朋友的建议,“L”也必须是大写字母)
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;
?>
我希望我能帮上忙。祝你有美好的一天。
【讨论】:
谢谢,但我遇到了同样的错误:调用未定义的方法 CI_Loader::load_template() 我认为问题不在于 load_template() 代码--我认为系统首先没有找到 MY_Loader 模块。 你在使用 CodeIgniter2 吗?您可以尝试将“MY_loader”添加到库部分的 application/config/autoload.php 中 如果它没有再次工作。尝试使用帮助程序(例如 application/helpers 文件夹中的 Login_helper.php)并在配置文件夹中使用自动加载器加载帮助程序($autoload['helper'] = array('Login');)然后调用函数。 İ如果您仍然需要帮助İ可以在答案中添加这些 @jdiz414 检查 config.php 哪个值具有 $config['subclass_prefix'] 它是 NEW_ 对我来说,而不是 MY_ 并在文件名或配置中更正它以上是关于Codeigniter MY_loader 未加载的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter CSS、JS 和图像未加载,可能假定为目录
即使未加载 codeigniter 会话库,也会在数据库中创建新的会话条目。为啥?