具有局部视图的Zend_Layout - 通过索引控制器设置值

时间:2009-07-31 13:49:54

标签: php zend-framework

我想我看不到树上的那棵树..

我使用Zend Framework,其中layout.phtml是渲染和部分

<?php echo $this->partial('_header.phtml') ?>

我的目标是使用

将我的IndexController中的表单呈现为“_header.phtml”
<?php echo $this->form; ?>

如何将表单传递给局部视图?

1 个答案:

答案 0 :(得分:9)

使用干净的变量范围呈现视图部分...也就是说,它们不会从调用Zend_View实例继承视图变量。

您可以在此处找到一些选项:

一,只需致电:

echo $this->render('_header.phtml');

而不是使用部分。此文件可以访问您的所有视图变量,因此您只需将表单分配给控制器中的视图,就像其他任何内容一样。

另一种方法是将表单作为变量显式传递给partial,如下所示:

echo $this->partial('_header.phtml', array('form' => $this->form));
// $this->form inside your partial will be your form

您的另一个选择是使用占位符或布局响应段。以下是占位符的示例:

_header.phtml或布局中......您希望表单呈现在哪里:

<?php echo $this->placeholder('header'); ?>

在你的控制器中:

$this->view->placeholder('header')->append($form); 
// I'm not sure, but you _may_ want to pass in $form->render() here.
// I can't remember if implode() (which is used in placeholders internally)
// will trigger the __toString() method of an object.

这有一个额外的好处,即不会使用一次性变量(如表单)污染您的视图实例。

注意:我会在ZF网站备份后立即链接到手册页; 1.9今天发布,所以该网站目前正在更新。

以下是一些相关的手册页: