我在控制器中为每个页面加载了一个header.php。然而,我希望每个页面都有动态标题。我的想法是在加载时将$title变量传递到视图中:
//Home Controller
function index()
{
$data['title'] = "Dynamic Title";
$this->load->view('header', $data);
$this->load->view('layouts/home');
$this->load->view('footer');
}
然后在我的header.php 中检查$title变量
<title>
<?php if ($title)
{
echo $title;
}
else
{
echo 'Default Title';
}
endif; ?>
</title>
然而,这不起作用,我得到了一个空白页。我认为这是我对header.php的语法,但我不明白为什么。
正确的if
语法
您在if-statement
上的语法有点错误。您可以使用以下任一项:
if (condition) {
// do a
} else {
// do b
}
或
if (condition) :
// do a
else :
// do b
endif;
你似乎把后者的结尾换成了前者。
在标题中使用三元运算符
一旦你做出了改变,你的标题就可以像一样轻松地打印出来
<title><?php echo isset($title) ? $title : 'Default Title' ; ?></title>
备选视图加载
加载视图的另一种方法是使用单个模板文件:
$data['title'] = 'Foo Bar';
$data['content'] = 'indexPage';
$this->load->view('template', $data);
这将加载template.php
文件作为视图。在这个文件中,你加载你的后续部分:
<?php $this->load->view("_header"); ?>
<?php $this->load->view($content); ?>
<?php $this->load->view("_footer"); ?>
这绝对不是必要的,但它可以帮助您在控制器中保持简洁。
我会尝试在视图中对$title进行var转储,看看它是否被传递了。
此外,您不需要"endif;",因为您要用最后一个大括号结束if语句。