我有一个 header.php 我正在为每个页面加载我的 Controller 。但是我希望每个页面都有动态标题。我的想法是在加载 View 时将 $title 变量传递到 View 中:
//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 语句
上的语法有点偏离。您可以使用:
if (condition) {
// do a
} else {
// do b
}
或者
if (condition) :
// do a
else :
// do b
endif;
你好像把后者的结局换成了前者。
在标题中使用三元运算符
完成更改后,您的标题可以轻松打印为:
<title><?php echo isset($title) ? $title : 'Default Title' ; ?></title>
替代 View 加载
加载 View 的另一种方法是使用单个模板文件:
$data['title'] = 'Foo Bar';
$data['content'] = 'indexPage';
$this->load->view('template', $data);
这会将 template.php
文件加载为您的 View 。在此文件中,您加载后续部分:
<?php $this->load->view("_header"); ?>
<?php $this->load->view($content); ?>
<?php $this->load->view("_footer"); ?>
这绝不是必需的,但它可以帮助您在 Controller 中保持简洁。
关于php - 我的 codeigniter header.php 中的动态标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498841/