我想我看不到树上的那棵树..
我使用Zend Framework,其中layout.phtml是渲染和部分
<?php echo $this->partial('_header.phtml') ?>
我的目标是使用
将我的IndexController中的表单呈现为“_header.phtml”<?php echo $this->form; ?>
如何将表单传递给局部视图?
答案 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今天发布,所以该网站目前正在更新。
以下是一些相关的手册页: