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中正确完成的,因为我习惯于包含文件.
目录结构:
/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)
此方法允许您更改不同布局的整个页面结构(管理员突然需要侧边栏!).您需要权衡一些代码重复,以提高灵活性和可维护性.
如果这对您来说不重要,那么视图助手也可以工作(查询前端控制器以查明请求是来自管理员还是配置文件操作,切换).但是,根据我的喜好,这种类型的逻辑太过于无法参与视图.