基本上,我今天开始学习codeigniter并买了一本关于这个主题的书。这本书引用了1.7版本,我正在使用的版本是2.1。
本书中有一个示例控制器,如下所示:
<?php
class Start extends CI_Controller {
var $base;
var $css;
function Start(){
parent::CI_Controller();
$this->base = $this->config->item('base_url');
$this->css = $this->config->item('css');
}
function hello($name)
{
$data['css'] = $this->css;
$data['base'] = $this->base;
$data['mytitle'] = 'Welcome to this site';
$data['mytext'] = "Hello, $name, now we're getting dynamic!";
$this->load->view('testview', $data);
}
}
但是只有当我删除以下功能时它才会起作用:
function Start(){
parent::CI_Controller();
$this->base = $this->config->item('base_url');
$this->css = $this->config->item('css');
}
有人知道为什么吗?如果是这样,我如何从配置中调用我的css文件。
编辑:观点:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Web Test Site</title>
<link rel="stylesheet" type="text/css" href="<?php echo $base . "/" . $css; ?>">
</head>
<body>
<h1><?php echo $mytitle; ?></h1>
<p class='test'> <?php echo $mytext; ?> </p>
</body>
</html>
任何帮助都会受到大力赞赏。谢谢!
答案 0 :(得分:2)
有很多变化 - 如果你不知道到底是什么,你应该看changelog。
如果不确切知道你的书会告诉你什么,我只能给你一些关于如何使你的代码工作的指示。
首先,当CI 2.1中的creating a controller时,您应该使用PHP5 OOP样式编写它 - 而不是像您在示例中所做的那样使用PHP4 OOP样式。
一个简单的例子:
<?php
class Start extends CI_Controller {
public function index()
{
echo 'Hello World!';
}
}
?>
现在这是你的基本控制器,只是回应'Hello World!'访问index.php/start
时。
如果您需要执行某些操作,获取配置变量或加载某些模型/库,然后再转到index()方法,则应创建一个__construct()方法,该方法在Start
控制器实例化时调用。这个__construct()
方法需要从CI_Controller
(您要扩展的父级)调用构造。您可以通过在自己的构造方法中键入parent::__construct();
来实现此目的:
<?php
class Start extends CI_Controller {
public function __construct()
{
parent::__construct();
//call models, variables, whatever here
}
public function index()
{
echo 'Hello World!';
}
}
?>
这基本上就是让你的控制器工作所需要知道的。
我不知道'从配置中调用你的css文件'是什么意思 - 我不知道css配置项包含什么,或者你想用它做什么。