Codeigniter总是加载到控制器中

时间:2011-03-21 11:34:19

标签: templates codeigniter

我来自俄罗斯,很抱歉英语不好。 我想在控制器的每个页面中加载模板。 例如(自动加载中的库解析器),

class Blog extends CI_Controller {
$header = array(
'header' => 'Welcome to my blog!'
);
$this->parser->parse('header', $header);

function index() {
...
echo "My text";
}   

的header.php:

<h1>{header}</h1>
<script>
alert("Welcome!");
</script>

但是我收到一个PHP错误: 语法错误,意外T_VARIABLE,期望第6行中的T_FUNCTION。第6行:

$header = array(

如何在每个页面中加载标题?感谢。

4 个答案:

答案 0 :(得分:1)

的config.php:

$autoload['libraries'] = array('parser');

controller blog.php:

<?php

class Blog extends Controller {

function __construct() 
    {
            parent::Controller();
            $header = array('header' => 'Welcome to my blog!');
            $this->parser->parse('header', $header);
    }

function index()
    {
        echo "Мой текст";
    }


}
?>

查看header.php:

{header}

它对我有用..

答案 1 :(得分:0)

尝试使用$ this-&gt;标题

调用数组

答案 2 :(得分:0)

当加载类属性时,如上面的$header,php期望在变量名之前声明属性的可见性。 PHP5有三个可见性选项:'public','private'或'protected'。我想这就是为什么你会得到“意想不到的T_VARIABLE”。它们之间的区别在swik.net描述为:

  

为了防止可访问性污染,PHP v5引入了3个前缀来声明类方法或变量:public,protected和private。

     

公共方法和变量可在类外部访问。受保护只能从类的内部和继承或父类访问。私人只能从班级内部访问。

试试这个:(我选择'公开'可见性,你可以确定哪个适合你的使用)

public $header = array('header'=>'Welcome to my blog");

接下来,我认为你应该在构造函数中调用解析器,而不是在类方法之外。

function _construct(){
    parent::_construct();
    $this->parser->parse('header',$this->header);
}

每次实例化类时都会调用构造函数,同时加载解析器库方法。

<强>更新

您的评论表明解析器无法正常运行。我假设你已经放置了

$this->parser->parse('header,$this->header);

在我建议的构造函数中。如果这不起作用,创建一个与您的类同名的函数并将解析器放在那里,该函数将在每次调用类时加载,类似于构造函数,但让我们看看是否可以解决问题。我建议将解析器库从自动加载中移除,直到你解决了问题为止,只是为了简化问题。

function blog(){
    $this->load->library('parser');
    $this->parser->parse('header',$this->header);
}

答案 3 :(得分:0)

也许这是输入错误,但是在header.php的代码中,您输入了{header},我猜它应该是{$header}