【问题标题】:Kohana default template with header and footer blocks integratedKohana 默认模板,集成了页眉和页脚块
【发布时间】:2015-04-23 21:15:02
【问题描述】:

晚安,伙计们,

不久前,当我找不到我的错误等时,你们中的一些人帮助我编写了一些代码。现在我正忙于一个新项目,我想在我的默认模板中使用块..

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

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

提前感谢您的所有帮助,如果我遗漏了什么,我会根据要求添加。

【问题讨论】:

    标签: php kohana


    【解决方案1】:

    首先,您可以将代码保留在模板中并在那里执行您的逻辑

    $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(),您无需再担心这个问题。

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      相关资源
      最近更新 更多