【问题标题】:CodeIgniter Default ControllerCodeIgniter 默认控制器
【发布时间】:2010-12-21 15:41:39
【问题描述】:


无论您访问什么 URL,我都会尝试创建默认控制器。
含义,自定义 404。

class MY_Exceptions extends CI_Exceptions
{
var $ci;

public function __construct()
{
    parent::CI_Exceptions();
    $this->ci =& get_instance();
}

function show_404($page = '')
{
  //load view here

}

}

我得到 get_instance 未定义。 (因为它是在调用库之后定义的)
有没有办法在 codeignigter 1.7.2 中创建自定义 404 控制器而不使用系统核心代码。

谢谢

【问题讨论】:

  • “因为它是在调用库之后定义的”没有意义。如果是 /after/ 定义的,应该没问题。

标签: php codeigniter controller


【解决方案1】:

Upgrade to CodeIgniter 2.0 因为its stable 并使用:

$route['404_override'] = '';

【讨论】:

    【解决方案2】:

    如果您只想自定义 404 页面,可以在 /system/application/errors/error_404.php 页面下进行。需要注意的是,您不能使用 $this 对象,它是严格的 HTML/CSS 或内置 PHP(无法访问您的库、模型等)。

    这是 CodeIgniter 在找不到控制器来处理请求时默认显示的页面。

    不确定这是否是您尝试这样做的原因,但这是创建自定义 404 页面的最简单方法。

    【讨论】:

    • +1 假设这是 OP 想要的,为什么还要重新发明轮子
    • 谢谢,我需要一个控制器而不是 HTML。
    • 您可以随时将redirect('controller/function') 放入errors/error_404.php 页面。
    【解决方案3】:

    http://maestric.com/doc/php/codeigniter_404

    我已经使用了这个解决方案,它在 CI 1.7 中对我有用

    【讨论】:

      【解决方案4】:

      这应该可以正常工作。确保它位于“application/libraries”文件夹中,并确保您的配置已将“MY_”设置为自定义库名称。

      另外,如果你正在使用function __construct(){},你可以使用parent::__construct()

      【讨论】:

      • 我按照你的解释做了,这不起作用......还有其他方法可以为 404 创建自定义控制器(!)吗?谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      相关资源
      最近更新 更多