0

それが私の形です:

class Application_Form_Search extends Zend_Form {

public function init() {
    $searchFor = new Zend_Form_Element_Text(array('name' => 'searchFor', 'class' => 'input-text search-box', 'value' => 'Search'));
    $searchFor->setAttribs(array('onclick' => 'this.value="";', 'onfocus' => 'this.select()', 'onblur' => 'this.value=!this.value?"Search":this.value;'))
            ->setDecorators(array('ViewHelper',));

    $submit = new Zend_Form_Element_Submit(array('name' => 'search', 'class' => 'input-submit-search search-box', 'label' => ''));
    $submit->setDecorators(array('ViewHelper',));

    $this->addElements(array($searchFor, $submit));
}

}

それが私の検索アクションです。

 public function searchresultAction() {
    $form = new Application_Form_Search();

    if ($this->getRequest()->isPost()) {
        $postdata = $this->getRequest()->getPost();

        if ($form->isValid($postdata)) {
            $this->_redirect('Search/Results);
        }
    }.......

問題は、送信ボタンをクリックしても検索/結果にリダイレクトされないことです。postdataには値がありません。私はlayout.phtmlでフォームを呼び出します。

4

1 に答える 1

0

投稿したコードにタイプミスがあります。リダイレクト行は$this->_redirect('Search/Results');

これが質問のタイプミスであり、コードではないと仮定すると、IIRC を使用してLocation ヘッダーを含むHTTP 302 Found応答が$this->_redirect()送信され、GET 要求を使用してブラウザーに新しいページが読み込まれます。そのため、POST データが Location ヘッダーの URL に含まれていない場合、そのデータは失われます。

を使用$this->_forward()して 302 リダイレクトを回避し、ZF に別のモジュール/コントローラー/アクションをロードさせることができます。このメソッドを使用して引数を渡すこともできます。

それ以外の場合、転送またはリダイレクトを行う理由は何ですか? searchresultActionデータの処理を続行し、自分自身を使用して結果を表示してみませんか?

于 2012-08-19T17:55:22.507 に答える