我对Zend很新。我只是想知道如何建模我的网站的布局/结构。我的网站将有一个用户个人资料部分,管理部分,以及该网站的默认视图。
对于admin和profile,我将在页眉和页脚中包含自定义元素,否则我想默认为通用页眉/页脚。
我希望能够将完全自定义的皮肤与默认视图分开,我应该如何构建东西?
到目前为止,我已经在名为application/
的{{1}}中创建了一个目录。我修改了application.ini文件,因此它解释了:
layouts
所以我的默认布局视图现在存在于resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
中,我在此layout.phtml文件中嵌入了页眉和页脚,但我想将它们删除并将它们放在单独的文件中。
有人可以协助我提出这个结构吗?所以要重新迭代我想要一个自定义默认布局,自定义管理布局,自定义用户配置文件布局,并且对于所有3个布局我想要可自定义的标题/页脚“包括”但我不知道这是如何在Zend中正确完成的,因为我习惯于包含文件。
答案 0 :(得分:9)
目录结构:
/application
/layouts
/scripts
/layout.phtml
/profile.phtml
/admin.phtml
/_header.phtml
/_footer.phtml
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>
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>
FooController.php:
profileAction()
{
// do stuff
$this->_helper->layout->setLayout('profile');
}
此方法允许您更改不同布局的整个页面结构(管理员突然需要侧边栏!)。您需要权衡一些代码重复,以提高灵活性和可维护性。
如果这对您来说不重要,那么视图助手也可以工作(查询前端控制器以查明请求是来自管理员还是配置文件操作,切换)。但是,根据我的喜好,这种类型的逻辑太过涉及不属于视图。
答案 1 :(得分:1)
要为站点的各个部分设置不同的布局/配置,我使用具有以下模块设置的模块。 Module Config
[编辑]
目录结构:
/application
/forms
/models
/modules
/admin
/config
/contollers
/layout
/views
/default
/config
/contollers
/layout
/views
答案 2 :(得分:1)
如果视图助手是复杂的,请使用具体视图助手。如果它们像<h1>my title</h1>
一样简单,则使用局部视图助手来渲染模板。
答案 3 :(得分:-1)
我使用的实现如下:
在每个布局phtml文件中(默认,管理员等)
我用:
<?= $this->action('header', 'page', 'default') ?>
<?= $this->layout()->content ?>
<?= $this->action('footer', 'page', 'default') ?>
所以在我的页面控制器中我可能有一个名为“headerAction”或“adminHeaderAction”的动作,它什么都不做(或者实际上可以执行特定任务)但返回一个header.phtml(我可以自定义该布局的标题信息) 。然后,我可以自定义与内容分开的页眉和页脚。
在我的控制器中,我只需要设置合适的布局:
$this->_helper->layout->setLayout('adminLayout');