我不知道怎么做这么简单的事情,我有点不高兴。
使用Zend的第一步,所以我正在尝试实现类似CMS做的事情,例如:
我的方法是定义一个layout.phtml
<?php
/* @var $this Zend_View */
$this->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
$this->headTitle()->setSeparator(' - ');
$this->headTitle('Something');
?>
<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php echo $this->headMeta() ?>
<?php echo $this->headTitle() ?>
<?php echo $this->headScript() ?>
<?php echo $this->headStyle() ?>
</head>
<body>
<?php echo $this->placeholder('top') ?>
<div id="main">
<div id="content">
<?php echo $this->layout()->content ?>
</div>
<?php echo $this->placeholder('footer') ?>
</div>
</body>
</html>现在,当我转到页面时,它调用了IndexController。索引中的内容将在$this->layout()->content中呈现,对吗?
如何调用在其他占位符中呈现的其他项?
例如:
如果我使用控制器中的init方法连接到数据库,并获取所需的内容,以确定要在哪个占位符中呈现哪些内容,则必须在所有其他控制器中重复这一点。
这方面的可用方法是什么?
发布于 2011-02-07 20:31:16
您可以使用行动视图帮手。
Action视图助手使视图脚本能够分派给定的控制器操作;然后返回在分派之后的响应对象的结果。当特定操作可以生成可重用的内容或“小部件化”内容时,可以使用这些内容。
// in your layout
<?php echo $this->action('action', 'controller', 'module');?>您也可以尝试ActionStack (Action )。
在您将在堆栈中添加的控制器中,设置新的内容键(默认键为" content ")。
// MenuController.php
public function init() {
$this->_helper->layout->setContentKey('menu')
}
// layout.phtml
<?php echo $this->layout()->menu ?> //instead of $this->placeholder('menu')https://stackoverflow.com/questions/4924962
复制相似问题