【发布时间】: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