对于CI 2.0以下版本,@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)
{
$data['content'] = &$content;
echo($this->load->view('base', $data, true));
}
}
第三步:创建一个样例控制器,以MY_Controller.php为基础,本例中我将在application/controllers/下创建一个welcome.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>
第五步:在/application/views中创建另一个视图,并将此视图命名为welcome_message.php,该文件的内容为:
<h1>Welcome</h1>
一旦所有这些步骤完成,您应该看到以下输出:
<!DOCTYPE html>
<html lang="en">
<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>
<div id="section_main">
<div id="content">
<h1>Welcome</h1>
</div>
</div>
<script src="/path/to/js.js"></script>
</div>
</body>
</html>
正如您所看到的,<h1>欢迎</h1>
被放置在基本模板中。
资源:
希望这有助于其他遇到这种技术的人。
base_url()
函数正常工作)。 - Christian Davén