我的codeigniter header.php中的动态标题

drp*_*ken 4 php codeigniter

我有一个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');

}
Run Code Online (Sandbox Code Playgroud)

然后检查我的header.php中的$ title变量

<title>
    <?php if ($title)
        { 
            echo $title; 
        }
    else
        { 
            echo 'Default Title'; 
        }
    endif; ?>       
</title>
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,我得到一个空白页面.我认为这是我的header.php的语法,但我无法弄清楚为什么.

Sam*_*son 8

正确的if语法

你的语法if-statement有点偏.你可以使用:

if (condition) {
  // do a
} else {
  // do b
}
Run Code Online (Sandbox Code Playgroud)

要么

if (condition) :
  // do a
else : 
  // do b
endif;
Run Code Online (Sandbox Code Playgroud)

你似乎已将后者的结尾转换为前者.

在标题中使用三元运算符

完成更改后,您的标题可以像以下一样轻松打印:

<title><?php echo isset($title) ? $title : 'Default Title' ; ?></title>
Run Code Online (Sandbox Code Playgroud)

替代视图加载

另一种加载视图的方法是使用单个模板文件:

$data['title'] = 'Foo Bar';
$data['content'] = 'indexPage';

$this->load->view('template', $data);
Run Code Online (Sandbox Code Playgroud)

这会将template.php文件加载为您的视图.在此文件中,您可以加载后续部分:

<?php $this->load->view("_header"); ?>
<?php $this->load->view($content); ?>
<?php $this->load->view("_footer"); ?>
Run Code Online (Sandbox Code Playgroud)

这绝不是必要的,但它可以帮助您保持控制器的简洁性.