我有一个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的语法,但我无法弄清楚为什么。
答案 0 :(得分:8)
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"); ?>
这绝不是必要的,但它可以帮助您保持控制器的简洁。
答案 1 :(得分:2)
好吧,我会尝试在视图中执行$ title的转储,只是为了看看它是否已经通过了。
另外,你不需要“endif;”因为你要用最后一个大括号结束if语句。