从Zend中的视图助手加载Zend_Form?

时间:2010-12-29 03:14:55

标签: zend-framework forms view helper

是否可以从视图助手加载Zend_Form?我在登录操作方法中使用此表单。但我也希望这个表单在每个页面的导航上都可见(所以没有实际调用登录操作),表单的post方法将发送到登录操作方法。

我猜它应该用视图助手来完成,但我不知道如何。

有什么想法吗?

我试过这个: 我的助手:

class Zend_View_Helper_LoginForm
{
    function getLoginForm(){
    $form = new Form_LoginForm();
    return $form;
    }
}

我从我的布局中调用它,如下所示: <?php echo $this->form(); ?>但这不起作用。 (我可以通过动作方法调用相同的表格!)

在这种情况下,它给了我这个错误(这没有意义,因为我的助手只有9行长):

Warning: Missing argument 1 for Zend_View_Helper_Form::form() in C:\xampplite\htdocs\zendpr\library\Zend\View\Helper\Form.php on line 44

3 个答案:

答案 0 :(得分:3)

您的视图助手应该扩展Zend_View_Helper_Abstract类,并且视图助手的方法必须与该类具有相同的名称:

class Zend_View_Helper_LoginForm extends Zend_View_Helper_Abstract
{
    function loginForm() {
        $form = new Form_LoginForm();
        return $form;
    }
}

你在视图脚本中这样称呼它:

echo $this->loginForm();

如果你打电话:

echo $this->form();

您正在使用视图助手Zend_View_Helper_Form

答案 1 :(得分:0)

让你的View_Helper扩展Zend_View_Helper_Abstract并覆盖setView()

class Zend_View_Helper_XX extends Zend_View_Helper_Abstract {

    public $view;

    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
    }

在控制器操作中初始化表单并设置表单引用

// controller action code
$this->view->form = $form;

然后在视图帮助器中,您可以通过视图

引用表单
// view helper code
$this->view->form;

答案 2 :(得分:0)

class Zend_View_Helper_LoginForm extents Zend_Form {

    function getLoginForm(){

        $form = new Form_LoginForm();       

        return $form;
    }
} 

OR

$this->view->form=$form;

两者都将返回表格。视图表单更具体的视图。

将此添加到您的phtml视图文件

echo $this->form();

要回答此问题 - 删除括号

应该是 echo $this->form;

相关问题