Kohana默认模板,集成了页眉和页脚块

时间:2015-04-23 21:15:02

标签: php kohana

Goodevening guys,

前段时间,有些人帮我编写了一些代码,当时我无法找到错误等等。现在我忙于一个新项目,我想在我的默认模板中使用块。

我有2个块(页眉和页脚)。我有一个默认模板,其中有一行

echo View::factory('blocks/header_ss')->render(); 

模板本身包含其他必要的代码,header_ss文件中只有导航菜单。现在我想谈谈这个块,来自:

Controller_MyTemplate extends Controller_Template.

现在我想谈谈模板控制器文件中的标题块模板文件,但如果我使用的代码如下:

$this->template->menutitle = 'Blablabla';

然后我不能在我的header_ss模板中使用$ menutitle ...它的逻辑因为模板引用了main_ss模板文件..

$this->template->block->header['tag'] = 'Content'; 

它对我来说看起来不合逻辑但是......好吧,我无法在谷歌上找到它..

提前感谢你的帮助,如果我错过了什么,我会根据要求添加。

1 个答案:

答案 0 :(得分:0)

对于一个人来说,你可以将代码保存在模板中并在那里做你的逻辑

$view = View::factory('blocks/header_ss');
$view->set('tag', 'Content');
echo $view->render();

然而,一段时间后这变得非常混乱,并且在模板中有太多的PHP会破坏模板的目的(在我看来)。

所以我在过去的项目中为这样的情况所做的只是分配一个变量,比如你的模板有

<?php echo $header; ?>
other HTML stuff

并在控制器中执行

class Controller_MyController extends Controller_Template
{
    public function action_foo()
    {
        $header = View::factory('blocks/header_ss');
        $header->set('tag', 'Content');
        $this->template->set('header', $header);
    }
}

这样做的好处是,Kohana会在必要时自动拨打render()并且您不再需要担心这一点。