Zend Framework - "包含"的布局最佳实践

med*_*iev 4 php zend-framework

我对Zend很新.我只是想知道如何建模我的网站的布局/结构.我的网站将有一个用户个人资料部分,管理部分,以及该网站的默认视图.

对于管理员和配置文件,我将在页眉和页脚中有自定义元素,否则我想默认为通用页眉/页脚.

我希望能够将完全自定义的皮肤与默认视图分开,我应该如何构建事物?

到目前为止,我已经在application/named中创建了一个目录layouts.我修改了application.ini文件,因此它解释了:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
Run Code Online (Sandbox Code Playgroud)

所以我的默认布局视图现在存在application/layouts/scripts/layout.phtml,我在这个layout.phtml文件中嵌入了页眉和页脚,但我想将它们剥离出来并将它们放在单独的文件中.

有人可以协助我提出这个结构吗?所以要重新迭代我想要一个自定义默认布局,自定义管理布局,自定义用户配置文件布局,并且对于所有3个布局我想要可自定义的标题/页脚"包括"但我不知道这是如何在Zend中正确完成的,因为我习惯于包含文件.

Ric*_*yen 9

目录结构:

/application
  /layouts
    /scripts
      /layout.phtml
      /profile.phtml
      /admin.phtml
      /_header.phtml
      /_footer.phtml
Run Code Online (Sandbox Code Playgroud)

layout.phtml:

<?php echo $this->doctype('HTML4_STRICT') ?>
<html> 
<head>  
  <title>Bah</title>
</head> 
<body>
  <?php echo $this->render('_header.phtml') ?>
  <?php echo $this->layout()->content ?>
  <?php echo $this->render('_footer.phtml') ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

profile.phtml:

<?php echo $this->doctype('HTML4_STRICT') ?>
<html> 
<head>  
  <title>Profile</title>
</head> 
<body>
  <!-- profile header -->
  <?php echo $this->layout()->content ?>
  <!-- profile footer-->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

FooController.php:

profileAction()
{
    // do stuff
    $this->_helper->layout->setLayout('profile');
}
Run Code Online (Sandbox Code Playgroud)

此方法允许您更改不同布局的整个页面结构(管理员突然需要侧边栏!).您需要权衡一些代码重复,以提高灵活性和可维护性.

如果这对您来说不重要,那么视图助手也可以工作(查询前端控制器以查明请求是来自管理员还是配置文件操作,切换).但是,根据我的喜好,这种类型的逻辑太过于无法参与视图.