【问题标题】:CodeIgniter Loader extend causes errorCodeIgniter Loader 扩展导致错误
【发布时间】:2012-06-18 11:04:34
【问题描述】:

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

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

扩展代码:

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 我不是解决它的正确方法。但它的工作原理。

libraries/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 无关。请参阅底部的答案。

【问题讨论】:

  • 顺便说一句,仅当我在服务器上运行代码时才会出现此错误。当我在本地主机(zendserver)上运行它时它可以工作..我猜它的错误显示设置..
  • 你为什么要做 $CI->load = $this;在 __construct 函数的“更新”代码中??
  • 因为这是Loader的扩展。现在我可以像这样加载视图和里面的东西:$this->view('view_file);

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


【解决方案1】:

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

helpers/url_helper.php

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

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

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

并且,是的,使用 parent::__construct();由 Broncha 回答

【讨论】:

    【解决方案2】:

    你的构造应该调用父构造

    function __construct()
    {
        parent::__construct();
        // i need the codeigniter super-object 
        // in all the functions
    
        $CI =& get_instance();
    }
    

    【讨论】:

      【解决方案3】:

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

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

      感谢大家的帮助:)

      【讨论】:

        猜你喜欢
        • 2014-05-06
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-16
        相关资源
        最近更新 更多