私の問題 (http://stackoverflow.com/questions/13609611/using-several-modules-in-the-same-view) の 1 つを解決する方法についていくつか質問した後、別の問題があります。
別のコントローラーでこのフォームの結果にアクセスする必要があったため、ビュー ヘルパーでフォームを作成しました。
ここに、QuickSearch.php というビュー ヘルパーを示します。
class Zend_View_Helper_QuickSearch extends Zend_View_Helper_Abstract
{
public function quickSearch()
{
$form = new Application_Form_QuickSearchForm();
return $form;
}
}
QuickSearchForm.php の呼び出し
class Application_Form_QuickSearchForm extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$this->setAction('/search/quicksearch');
$this->addElement('text', 'searchLocation', array(
'label' => 'Location:',
'required' => true,
'filters' => array('StringToUpper')
));
//[some other elements]
$this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Search',
));
}
私のメインページビューでは、ビューヘルパーを次のように呼び出します
echo $this->quickSearch();
私は自分のフォームにアクセスできるので、これはうまくいきます。
フォームを送信すると、本来 /search/quicksearch が呼び出されますが、フォームからデータにアクセスしようとすると、空のように見えます。
これが私の検索コントローラーです(SearchController.php)
class SearchController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
}
public function quicksearchAction()
{
$form = new Application_Form_QuickSearchForm();
if ($this->getRequest()->isPost())
{
echo("post");
$data = $form->getValues();
echo($data['searchLocation']);
}
}
}
echo("post") を配置して、POST リクエストを受け取っているかどうかを確認し、それが機能するたびに確認しました。表示されるのは「投稿」だけで、2 番目のエコーでは何も表示されません。
別のコントローラーからフォームのデータを取得する方法で何が理解できなかったのかわかりません。
誰かがこれで私を助けることができますか? なぜうまくいかないのかわかりません。