对于小于2.0的旧版本的CI,@Reinis答案可能是正确的,但是从那时起发生了很多变化,所以我想我会用我所做的事情的最新方法来回答这个问题。
其中大部分类似于@Reinis方法,也在此处描述:http://codeigniter.com/wiki/MY_Controller_-_how_to_extend_the_CI_Controller
但是,以下是我完成的更新:
步骤 1:创建一个MY_Controller.php文件并将其存储在 /application/core 中
步骤2:在您的MY_Controller.php文件中放入以下内容:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
function _output($content)
{
// Load the base template with output content available as $content
$data['content'] = &$content;
echo($this->load->view('base', $data, true));
}
}
步骤 3:创建一个基于MY_Controller.php的示例控制器,在本例中,我将创建一个欢迎.php控制器,其中包含以下内容:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends MY_Controller {
function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('welcome_message');
}
}
设置这些控制器后,请执行以下操作:
步骤 4:在 /application/views 中创建一个基视图并将文件命名为 base.php,文件的内容应类似于以下内容:
<!DOCTYPE html>
<!--[if IE 7 ]><html lang="en" class="ie7"><![endif]-->
<!--[if IE 8 ]><html lang="en" class="ie8"><![endif]-->
<!--[if gt IE 8]><!--><html lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title></title>
<link rel="stylesheet" href="<?php echo base_url(); ?>stylesheets/reset.css" media="screen" />
</head>
<body>
<div id="section_main">
<div id="content">
<?php echo $content; ?>
</div>
</div>
<?php $this->load->view('shared/scripts.php'); ?>
</div>
</body>
</html>
步骤 5:在 /application/views 中创建另一个视图,并将此视图命名为 welcome_message.php,此文件的内容将为:
<h1>Welcome</h1>
完成所有这些操作后,您应该会看到以下输出:
<!DOCTYPE html>
<!--[if IE 7 ]><html lang="en" class="ie7"><![endif]-->
<!--[if IE 8 ]><html lang="en" class="ie8"><![endif]-->
<!--[if gt IE 8]><!--><html lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title></title>
<link rel="stylesheet" href="http://somedomain.local/stylesheets/reset.css" media="screen" />
</head>
<body>
<!-- BEGIN: section_main -->
<div id="section_main">
<div id="content">
<h1>Welcome</h1>
</div>
</div>
<!-- END: section_main -->
<script src="/path/to/js.js"></script>
</div>
</body>
</html>
如您所见,已放入基本模板中。<h1>Welcome</h1>
资源:
希望这有助于其他任何遇到这种技术的人。