我有点不高兴因为无法弄清楚如何做这么简单的事情。
使用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。 Index中的内容将在$this->layout()->content
右侧呈现?
如何在其他占位符中调用其他项目进行渲染?
例如:
如果我使用控制器中的init方法连接到数据库并获取所需的东西,以确定要在哪个占位符中呈现哪些内容,我必须在所有其他控制器中重复该内容。
有哪些可用方法?
答案 0 :(得分:1)
您可以使用Action View Helper Action视图助手使视图脚本能够调度给定的控制器动作;然后返回调度后响应对象的结果。当特定操作可以生成可重复使用的内容或“小部件化”内容时,可以使用这些内容。
// in your layout
<?php echo $this->action('action', 'controller', 'module');?>
您也可以尝试ActionStack(行动助手) 在您将在堆栈中添加的控制器中设置新的内容密钥(默认密钥为“content”)。
// MenuController.php
public function init() {
$this->_helper->layout->setContentKey('menu')
}
// layout.phtml
<?php echo $this->layout()->menu ?> //instead of $this->placeholder('menu')