在Zend Framework中为多个操作创建表单

时间:2012-06-05 23:01:01

标签: php zend-framework

我有一个上传表单,显示在overlay / lightbox / toplayer上。它仅适用于多个控制器中的多个操作。

创建此表单需要~6行代码,需要访问REQUEST对象才能从中获取参数。

我应该把这段代码放在哪里,这样我就可以在我需要的操作中轻松创建表单。

1 个答案:

答案 0 :(得分:2)

我将此功能放在Action Helper中。可以直接从任何控制器操作调用操作助手(并且是延迟加载的),操作助手可以访问控制器操作所做的所有操作,包括请求对象和视图。

示例:

<?php

class My_Action_Helper_FormCreator extends Zend_Controller_Action_Helper_Abstract {
    public function direct($options = null)
    {
        $request  = $this->getRequest();
        $view     = $this->getActionController()->view;
        $form     = new Application_Form_SomeForm();

        // set form options here...

        $view->form = $form; // optional - assign form directly to the view

        return $form;
    }
}

将该代码放在library/My/Action/Helper/FormCreator.php中(或在需要的地方更改类名)。

然后,在您的行动中,将其称为:

$form = $this->_helper->FormCreator();

最后,我们需要告诉助手经纪人在哪里找到这个动作助手。为此,请将其添加到引导程序中:

protected function _initActionHelpers() {
    Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helper');
}

希望有所帮助。