使用Zend_Layout管理多个布局?

时间:2011-10-20 10:06:28

标签: zend-framework layout

我正在尝试在zend框架中实现模板系统。

我基本上习惯将所有部分文件和模板变体放在一个文件中,但随着模板的增加,这种情况非常难以管理。

例如

/application/layout/script/template1partial-banner.phtml
/application/layout/script/template1partial-footer.phtml
/application/layout/script/template1variation1.phtml
/application/layout/script/template1variation2.phtml
/application/layout/script/template2variation1.phtml
/application/layout/script/template2variation2.phtml

你可以看到,这是多么难以管理 所以我想在这个结构下管理它

/application/layout/script/template1/partial/banner.phtml
/application/layout/script/template1/partial/footer.phtml
/application/layout/script/template1/variation/1.phtml
/application/layout/script/template1/variation/2.phtml

/application/layout/script/template2/partial/banner.phtml
/application/layout/script/template2/partial/footer.phtml
/application/layout/script/template2/variation/1.phtml
/application/layout/script/template2/variation/2.phtml

定义部分不是问题,您可以使用$this -> render($this -> getTemplateName()."/partials/banner.phtml");

它的变化,这是主要问题 我之前使用过$this -> _helper -> layout -> setLayout('template1variation1');,但对于新的东西我现在不能使用它。

我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

您还可以在layout功能中定义完整路径。

$this->_helper->layout->setLayout('template1/partial/banner');

执行此任务的另一种方法是禁用当前操作的布局,然后将其呈现给任何phtml文件。例如,当前操作的第一个disable布局

   $this->_helper->layout->disableLayout();

然后只渲染到像这样的任何html文件

      $this->render("complete path to your phmtl file");