CodeIgniter Loader扩展导致错误

时间:2012-06-18 11:04:34

标签: codeigniter utf-8 loader extend byte-order-mark

我遇到了让我疯狂的事情。请帮帮我:(

我尝试按顺序扩展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';
    }

}

我目前得到的错误

Unable to load the requested file: 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';
    }

}

现在我收到标题

的错误
A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /mounted-storage/home75b/sub007/sc43190-SREL/gogetmilk.com/application/core/MY_Loader.php:1)

Filename: libraries/Session.php

Line Number: 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无关。见底部的答案。

3 个答案:

答案 0 :(得分:1)

  

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

     

助手/ url_helper.php

您收到此错误是因为您未加载URL帮助程序。我没有看到任何URL助手函数的调用,所以我假设错误被抛入另一个文件...尝试添加

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

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

,是的,使用parent :: __ construct();正如Broncha的回答

答案 1 :(得分:0)

你的构造应该调用父的构造

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

    $CI =& get_instance();
}

答案 2 :(得分:0)

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

这是文件开头的一个隐形物料清单。 使用此应用程序删除此字节:http://sourceforge.net/projects/bomremover/

感谢大家的帮助:)