我创建了一个视图助手,用作订阅时事通讯的侧边栏小部件。按照用于创建表单的官方 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()...
我是否必须包含一些教程中未提及的附加代码,因为我正在使用帮助文件中的代码?