Zend framework Zend框架:在布局中添加表单

Zend framework Zend框架:在布局中添加表单,zend-framework,zend-form,Zend Framework,Zend Form,我创建了登录表单和加载项UserController->loginAction: public function loginAction() { $form = new Application_Form_Login(); $this->view->loginForm = $form; } 如何在layouts/scripts/header.phtml中添加我的表单,因为我尝试了此操作,但没有成功: <?php echo $this->loginFor

我创建了登录表单和加载项UserController->loginAction:

 public function loginAction() {
    $form = new Application_Form_Login();

    $this->view->loginForm = $form;
}
如何在layouts/scripts/header.phtml中添加我的表单,因为我尝试了此操作,但没有成功:

<?php echo $this->loginForm ?>

由于布局与视图对象是分开的,因此需要将表单指定给布局

在控制器中:

public function loginAction()
{
    $form = new Application_Form_Login();

    // assign the form to the layout
    $this->_helper->layout()->loginForm = $form;
}
在布局中:

<?php if ($this->layout()->loginForm): ?>
    <?php echo $this->layout()->loginForm; ?>
<?php endif; ?>

您正在查找渲染函数:

<?php
    echo $this->loginForm->render();
?>


好的,我尝试了这个方法,但是我没有发现formLayout只是一个占位符,因此如果您从控制器或视图中为它分配了一些内容,它应该在布局本身中可用。以上代码对我来说在ZF 1.11.11和1.11.12上运行良好,现在您的代码是什么?是否确实为布局指定了有效的表单对象?您现在正在尝试在视图或布局中渲染窗体吗?布局中的值只有在访问
UserController::loginAction
时才会设置,因为它是从那里分配的返回
NULL
?是否正确?是
标题.phtml
您的布局还是实际布局呈现
标题.phtml
?如果是这样的话,它是如何呈现的呢?
\uuu-toString()
方法呈现表单,这样就可以像问题中所做的那样直接回显表单了。不需要直接调用render。什么工作结束了?你可以把你的解决方案作为答案,然后接受它,其他人也可以投票表决。
// in controller:
$form = new Application_Form_Login();
$this->view->placeholder('loginForm')->set($form);

---------------

// in layout script:
$form = $this->placeholder('loginForm');
if ($form instanceof Zend_Form) {
    echo $form;
}
<?php
    echo $this->loginForm->render();
?>