0

我遇到了一些让我发疯的事情。请帮我 :(

我正在尝试扩展 CI_Loader Core 以创建全局页眉和页脚。由于某种原因,扩展会导致错误。

扩展代码:

class MY_Loader extends CI_Loader
{
    function __construct()
    {
        // i need the codeigniter super-object 
        // in all the functions
        $CI =& get_instance();
    }

    public function load_header()
    {
        echo 'header';
    }

    public function load_footer()
    {
        echo 'footer';
    }

}

我目前得到的错误

无法加载请求的文件:helpers/url_helper.php

更新:更改了代码 - 新错误

class MY_Loader extends CI_Loader
{

    function __construct() {
        parent::__construct();

        $CI =& get_instance();
        $CI->load = $this;
    }

    public function load_header()
    {
        echo 'header';
    }

    public function load_footer()
    {
        echo 'footer';
    }

}

现在我的标题出现了一些错误

遇到 PHP 错误

严重性:警告

消息:无法修改标头信息 - 标头已发送(输出开始于 /mounted-storage/home75b/sub007/sc43190-SREL/gogetmilk.com/application/core/MY_Loader.php:1)

文件名:库/Session.php

行号:672

更新#2 我不是修复它的正确方法。但它的工作。

library/Session.php 中的第 672 行设置了一个 cookie

我添加了一个测试以查看是否已发送标头:

    if (! headers_sent() )
    {
        setcookie(
            $this->sess_cookie_name,
            $cookie_data,
            $expire,
            $this->cookie_path,
            $this->cookie_domain,
            $this->cookie_secure
        );           
    }

它不能正常工作。我在打印任何内容之前、打印之后、视图内、加载视图之后等创建了会话。

有人相信这会导致任何问题吗?

问题已解决,与 codeigniter 无关。请参阅底部的答案。

4

3 回答 3

1

我目前得到的错误无法加载请求的文件:

助手/url_helper.php

您收到此错误是因为您没有加载 URL 帮助程序。我没有看到对任何 URL 辅助函数的任何调用,所以我认为错误是在另一个文件中引发的......尝试添加

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

在相关文件中或将其加载到config/autoload.php

并且,是的,使用 parent::__construct(); 正如 Broncha 回答的那样

于 2012-06-18T12:28:55.607 回答
0

您的构造应该调用父构造

function __construct()
{
    parent::__construct();
    // i need the codeigniter super-object 
    // in all the functions

    $CI =& get_instance();
}
于 2012-06-18T11:55:16.857 回答
0

问题解决了。它甚至不是 CodeIgniter 问题。

在文件的开头,它是一个不可见的 BOM。使用此应用程序删除此字节:http: //sourceforge.net/projects/bomremover/

谢谢大家的帮助:)

于 2012-06-19T09:54:06.270 回答