2012-02-14 62 views
0

我正在使用这个Template library用于Codeigniter。Codeigniter加载多个模板

我不能完全弄清楚如何使用他的高级使用示例#3加载多个模板。我觉得下面的load_main()函数中缺少第二个模板的加载:

function load_main($view = '', $view_data = array(), $return = FALSE) 
{ 
$this->set('nav_list', array('Home', 'Photos', 'About', 'Contact')); 
$this->load('template', $view, $view_data, $return); 
    //shouldn't this be there?=> $this->load('template2', $view, $view_data, $return); 
} 

我对吗?如果是这样,你能提供一些关于控制器和视图文件的外观的提示吗?

下面是笔者对控制器:

$this->template->set('nav', 'About'); 
$this->template->set('title', 'About me'); 
$this->template->load_main('about'); 

而且模板视图:

<html> 
<body> 
    <div id="contents"><?= $contents ?></div> 
    <div id="footer">Copyright 2008</div> 
<ul class="navigation"> 
<?php foreach($nav_list as $i => $nav_item): ?> 
    <li class="<?= ($nav == $nav_item ? 'selected' : '')?>"> 
     <?= anchor($nav_item, $nav_item) ?> 
    </li> 
<?php endforeach ?> 
</ul> 
</body> 
</html> 

回答

2

我不认为它失去了一些东西,但它是一个有点不清楚它是如何做的工作...

function load_main($view = '', $view_data = array(), $return = FALSE) 
{ 
    $this->set('nav_list', array('Home', 'Photos', 'About', 'Contact')); 
    $this->load('template', $view, $view_data, $return); 
} 

所以这种方法使用“模板”模板,并设置一些导航的东西。 $this->template->load_main('test');将使用“模板”模板加载views/test.php。

因此,要使用不同的模板,在模板文件中创建一个新的负载方法(和模板,很明显)

function load_radical_template($view = '', $view_data = array(), $return = FALSE) 
{ 
    $this->load('radical_template', $view, $view_data, $return); 
} 

现在$this->template->load_radical_template('test');将加载的意见/使用“radical_template”模板test.php的。

+0

感谢Stormdrain,看起来像是这样做的一种方式,我希望我们不必添加另一种方法,因为杰罗姆的文档并不意味着这一点,但我想有时候你必须做你必须做的事情。 。谢谢,-tim – 2012-02-15 05:08:46

+1

哦,但确实如此:“要轻松处理多个模板,请在库/ Template.php中定义新的加载方法”。从第3部分的第一句引用 - 高级使用3:在您链接到的页面上有多个模板_。 – stormdrain 2012-02-15 14:14:40

+0

好的,是的,我认为你是对的,再次感谢! – 2012-02-15 17:27:46