2011-05-12 157 views
1

我想定义Zend_Layout应该从Bootstrap类使用哪个布局。这个怎么做?从Bootstrap设置Zend布局

就像从控制器,你可以这样做

$this->_helper->_layout = "somelayout"; 

我想布局从引导类改变。

+0

你能解释为什么你想在bootstrap中做到这一点?它似乎不是正确的地方..也许你正试图解决错误的问题。 – 2011-05-13 05:12:36

+0

@Duncan_m,我正在尝试为单个网站创建不同的布局,这可以动态更改。所以我需要这个。我可以通过一个控制器来完成,但是我会在每个控制器中指定它,而如果我在引导程序中初始化,它会更好 – mrN 2011-05-14 08:24:52

回答

2

你可以做到这一点,如下所示:

public function _initLayout() { 
    $layout = $this->bootstrap('layout')->getResource('layout'); 
    $layout->setLayout('somelayout'); 
} 
+2

+1当然,前提是您已经在'application.ini'中启动了布局,或者一些'_initLayout()'方法。 ;-) – 2011-05-12 12:43:36

+0

是的,我也在application.ini中启动了布局,但上面的代码给出了一个空白页面。 somelayout.phtml确实存在于布局的脚本文件夹中,这是在application.ini中设置的默认布局路径 – mrN 2011-05-12 14:08:16

+0

@Marcin,@Alexander,你知道如何解决我收到的空白页。 – mrN 2011-05-13 06:25:08

0

你可以深入了解一下它在这些网页:

http://framework.zend.com/manual/en/zend.layout.quickstart.html

http://framework.zend.com/manual/en/zend.layout.options.html

第二个是更有益的,但请确保您在第一页中阅读“在Zend Framework MVC中使用Zend_Layout”。

如果您想从引导程序严格启动布局,您可以执行以下操作。

 

public function _initMyLayout() 
{ 
    $options = array(
    'layout'  => 'somelayout', 
    'layoutPath' => '/path/to/layouts', 
    'contentKey' => 'CONTENT' 
    }; 


    $layout = Zend_Layout::startMvc($options); 

    return $layout; 

} 
 

上述内容等同于您在.ini文件中指定默认脚本和路径。

+0

它不工作 – mrN 2011-05-13 07:40:24