ZF2:视图中的表单帮助程序


ZF2: Form in view helper

我创建了一个视图助手,用作时事通讯订阅的侧边栏小部件。按照官方的 zf2 教程来创建表单,我在 __invoke() 中添加了使用 addAction 的代码。

namespace Application'View'Helper;
use Zend'View'Helper'AbstractHelper;
use Application'Model'NewsletterTable;
use Application'Form'NewsletterForm;

class Newsletter extends AbstractHelper
{ 
    protected $newsletterTable;
    public function __construct(NewsletterTable $newsletterTable)
    {
        $this->newsletterTable = $newsletterTable;
    }
    public function __invoke()
    {      
        $form = new NewsletterForm();
        $form->get('submit')->setValue('Subscribe');
        $request = $this->getRequest();
        if ($request->isPost()) {
            $newsletter = new Newsletter();
            $form->setInputFilter($newsletter->getInputFilter());
            $form->setData($request->getPost());
            if ($form->isValid()) {
                $newsletter->exchangeArray($form->getData());
                $this->getNewsletterTable()->saveEmail($newsletter);
            }
        }
        return array('form' => $form);            
    } 
    public function getNewsletterTable()
    {
        if (!$this->newsletterTable) {
            $sm = $this->getServiceLocator();
            $this->newsletterTable = $sm->get('Application'Model'NewsletterTable');
        }
        return $this->newsletterTable;
    }      
}

以下代码返回一条错误消息:

Fatal error: Call to undefined method Application'View'Helper'Newsletter::getRequest()...

我是否必须包含一些教程中未提及的其他代码,因为我正在使用帮助程序文件中的代码?

您不应该处理来自查看助手的表单请求!这是控制器的工作。

使用 viewhelper 获取表单,但发布到专用页面(具有自己的控制器/操作)并处理该页面上的表单请求。