我来自俄罗斯,很抱歉英语不好。 我想在控制器的每个页面中加载模板。 例如(自动加载中的库解析器),
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(
如何在每个页面中加载标题?感谢。
答案 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}