ニュースレター購読のサイドバー ウィジェットとして使用するビュー ヘルパーを作成しました。フォームを作成するための公式の 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()...
ヘルパー ファイルのコードを使用しているため、チュートリアルに記載されていないコードを追加する必要がありますか?