【问题标题】:Undefined Property with Custom 404 Page in CodeigniterCodeigniter 中带有自定义 404 页面的未定义属性
【发布时间】:2013-09-16 05:22:41
【问题描述】:

我在 routes.php 文件中设置了 404_override。文件很简单:

public function missing_page()
{
    $this->output->set_status_header('404');
    $this->load->view('header');
    $this->load->view('404');
    $this->load->view('footer');
}

如果我导航到不存在的控制器(即 /missing-page),自定义 404 方法会正确加载。如果我导航到现有控制器但方法不存在(即 /not-missing/missing),我会收到错误消息:

Codeigniter 错误日志:Severity: Notice --> Undefined property: CI_Loader::$user_model /application/views/header.php 30

PHP 错误日志: PHP Fatal error: Call to a member function active() on a non-object in /views/header.php on line 30

为什么这适用于一个而不是另一个?

【问题讨论】:

  • 你的 header.php 的第 30 行是什么?
  • if ( ! $this->user_model->active() ) :,user_model是根据我的CI日志加载的。
  • 发生错误是因为您的 header.php 需要声明 user_model。我假设您的控制器中有 $this->load->model('user_model'); 之类的东西。
  • 但是如果我导航到一个没有映射到控制器的 URL,它工作得很好吗?我没有向视图传递任何东西,模型只是返回一个布尔值。
  • 模型是自动加载的,根据 CI 日志在出错之前加载。还有其他想法吗?

标签: php codeigniter


【解决方案1】:

查看http://ellislab.com/codeigniter/user-guide/general/errors.html

那里说找不到控制器时会触发404。

这就是为什么您的第一个场景可以正常工作的原因。

但在您的第二种情况下,codeigniter 找到了您的控制器,但没有找到您的方法。

问候。

【讨论】:

    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 2011-12-23
    • 2015-03-06
    • 2018-11-16
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多