基本上,我今天开始学习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>
任何帮助都将不胜感激。谢谢
有很多更改-如果您不想知道确切的内容,您应该查看更改日志。
在不知道你的书告诉你要做什么的情况下,我只能给你一些指导,让你的代码工作。
首先,当在CI2.1中创建控制器时,您应该使用PHP5 OOP样式编写它,而不是像您在示例中所做的那样使用PHP4 OOP样式。
一个简单的例子:
<?php
class Start extends CI_Controller {
public function index()
{
echo 'Hello World!';
}
}
?>
现在,这是你的基本控制器,它只会回应"你好,世界!"当访问CCD_ 1时
如果你需要做一些事情,在使用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配置项包含什么,也不知道这本书希望你用它做什么。