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';
它对我来说看起来不合逻辑但是......好吧,我无法在谷歌上找到它..
提前感谢你的帮助,如果我错过了什么,我会根据要求添加。
答案 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()
并且您不再需要担心这一点。