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

时间:2011-06-27 20:54:46

标签: 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');

}

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

<title>
    <?php if ($title)
        { 
            echo $title; 
        }
    else
        { 
            echo 'Default Title'; 
        }
    endif; ?>       
</title>

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

2 个答案:

答案 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语句。