我通过在Application/Core文件夹中添加MY_Controller.php来扩展CodeIgniter控制器.它工作正常,但现在当我在error_404.php页面上添加以下代码时Application/errors,我收到错误.
代码导致问题:
<?php $ci =& get_instance();?>
<?php $this->ci->load->view('header')?>
Run Code Online (Sandbox Code Playgroud)
错误:
Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231
Run Code Online (Sandbox Code Playgroud)
第231行system\core\CodeIgniter.php是:
function &get_instance()
{
return CI_Controller::get_instance();
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题,以便我可以在error_404.php中加载视图而无需更改系统文件中的任何内容.
PS.我正在使用最新版本.
谢谢.
我不认为CI_Controller已加载.Exception类使用a处理404页面输出include.
在过去,我曾经使用直接include拼凑模板,或者file_get_contents()对我的404页面URL 执行或cURL请求,但他们最终做了一些事情.在2.0中,您可以在以下位置定义自定义404页面routes.php:
$route['404_override'] = 'controller/method/parameter';
Run Code Online (Sandbox Code Playgroud)
它仍然不是一个完美的解决方案,但现在最简单的方法就是使用这条路线.
请注意,base_url()."controller/method/parameter"必须是一个有效的URL,并且您应该确保在控制器中设置404标题也输出页面(由于某种原因,它不会自动完成).
在此处遵循CodeIgniter教程时出现此问题:http://codeigniter.com/user_guide/tutorial/static_pages.html
问题是我试图访问网址:
本地主机/ CodeIgniter_2.1.1 /应用/控制器/ pages.php
而不是寻址网址:
本地主机/ CodeIgniter_2.1.1/index.php文件/网页/图
我知道你问这个问题已经有18个月了但也许它可以帮助别人:)
小智 5
或者你可以试试这个,也许有点脏,但我认为它对我有用
将您的例外更新为
function show_404($page = '', $log_error = TRUE) {
if ($log_error) {
log_message('error', '404 Page Not Found --> '.$page);
}
header('Location: http://www.########.###/error/error_404');
die();
}
Run Code Online (Sandbox Code Playgroud)
然后只需创建控制器来处理重定向,也许有不同的错误,你可以使用相同的控制器
这样你就可以获得动态的页眉和页脚
| 归档时间: |
|
| 查看次数: |
22729 次 |
| 最近记录: |