1

我已尝试阅读此处发现的问题:Zend 框架中的模块配置和布局配置 它被描述为我需要了解的有关布局的所有信息 - 但是 - 恐怕我发现它有点难以理解。

我有许多 Zend 控制器:

class FirstController extends Zend_Controller_Action {
   public function init()        { /* stuff */ } 
   public function indexAction() { /* stuff */ } 
   public function indexBrowse() { /* stuff */ } 
}

class SecondController extends Zend_Controller_Action {
    // stuff   
}

class ThirdController extends Zend_Controller_Action {
    // stuff
}

我需要他们有以下安排。

  1. FirstController 和 Second Controller 共享一个标头
  2. FirstController - indexAction 和 browseAction 共享一个额外的标头
  3. Thirdcontroller - 有它自己的标题或可能“没有标题”(对于 ajax)

就目前而言,我在view/script/<actionname>.phtml文件http://framework.zend.com/manual/en/zend.layout.quickstart.html中得到了巨大的复制

有更多信息,但我无法找到将这一切带回家的关键信息。

从上面的第一个文档中,我猜我的application.ini文件中包含以下内容

 resources.layout.layout = "layout"
 resources.layout.layoutPath = APPLICATION_PATH "/layouts"

但是我应该创建一个名为“Layouts”的文件夹还是应该使用某种views/common文件夹?然后调用文件layout.php吗?

然后,在里面layout.php我是否正确理解

    <div id="content"><?php echo $this->layout()->content ?></div>

会渲染单个动作的PHTML文件吗?和

   public function anotherAction() {
        $this->_helper->layout->setLayout('foobaz');
   }

是否会使整个操作使用不同的布局文件(布局文件夹中名为“foobaz.php”的文件)?

感谢您花时间为我解决这个问题。

4

1 回答 1

2

是的,你没看错,

 $this->_helper->layout->setLayout('foobaz');

应该使用不同的布局渲染页面,并简单地在 layout()->content 占位符中输出视图内容。

另一种方法是使用单一布局,并使用部分加载不同的标题。

在你的行动中,你可以

 public function indexAction() { 
       $layout = $this->_helper->layout();
       $layout->assign('header', 'header_file_name');
}

然后在你的布局中你可以这样做

   <div id="header">
       <?php echo $this->partial($this->layout()->header);?>
 </div>

这可能已经过头了。

于 2011-02-21T21:37:15.797 回答