【发布时间】:2017-03-11 19:03:24
【问题描述】:
我在“application/core”中有一个控制器“MY_Controller.php”,它扩展了“CI_Controller”:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Controller extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->helper('form');
$this->load->helper('url');
$this->load->helper('security');
$this->load->helper('language');
// Load language file
$this->lang->load('en_admin', 'english');
}
}
我在扩展“MY_Controller”的“application/controllers”中创建了另一个名为“Auth.php”的控制器:
class Auth extends MY_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('ion_auth');
if ($this->ion_auth->logged_in() === FALSE) {
redirect('user/login');
}
}
}
我创建了第三个控制器“Dashboard.php”,它应该扩展“Auth”,但会引发错误:
class Dashboard extends Auth
{
public function index()
{
echo 'Hello from the dashboard';
}
}
致命错误:在第 5 行的 /home/user/www/forum/application/controllers/Dashboard.php 中找不到“Auth”类
非常感谢您提出解决此问题的建议。
【问题讨论】:
-
尝试将 Auth 控制器添加到控制器自动加载中。我认为您遇到的问题是 CodeIgniter 期望加载该类,因此它知道它
-
这与 CI 查找控制器的方式有关。这会导致将它们扩展到第一个
MY_Controller之外的问题。多个解决方案可以found here。 -
只需将 Auth 类放在 MY_Controller.php 文件中即可。
标签: php codeigniter oop