1

検索文字列をコントローラーに送信し、利用可能な場合は検索結果を表示するための単純な検索フォーム (site/search.php) があります。CGridView を使用してデータを表示しています。 更新これが私のビュー(site/search.php)ファイルです:

     <form name="quickSearchForm" action="<?php echo Yii::app()->createUrl("site/search"); ?>" method="POST">
          <div data-role="fieldcontain">
              <input type="search" name="searchText" id="searchText" value="<?php echo $searchText; ?>"/>
              <input type="submit" name="submitBtn" id="submitBtn" value="search"/>
                    <a href="#">Advanced</a>
           </div>
     </form>


<?php 
   if (!empty(itemList)) {
        $this->widget('zii.widgets.grid.CGridView', array(
            'id'=>'task-grid',
            'dataProvider'=>$itemList,
            'pager'=>array(
                'header'         => '',
                'firstPageLabel' => '&lt;&lt;',
                'prevPageLabel'  => '&lt;',
                'nextPageLabel'  => '&gt;',
                'lastPageLabel'  => '&gt;&gt;',
            ),
            'template'=>'{pager}{items}{pager}',
            'columns'=>array(
                array(
                    'name'  => 'name',
                    'value' => '$data->name',
                ),
                array(
                    'name'  => 'date',
                    'value' => 'date("d/m/Y",strtotime($data->date) )',   
                ),
             ),
        ),);
     } //end if
?>

コントローラでは、$searchText を使用して CActiveDataProvider でデータを取得し、search.php にレンダリングします。

  <?php       
        $this->render($view = "search", array(
            'searchText'    => $searchText,
            'itemList'       => $itemListBySearch,
            'taskResult'    => $tasks,

        ));

更新を終了

私の問題は、$itemList に多くの項目があり、GridView が改ページされることです。しかし、ボタンページ[2]をクリックすると、ブラウザが直接アクセスしr=site/search&page=2、itemListが失われます!

代わりに ajax を使用してもいいですr=site/search&page=2か?

4

1 に答える 1

1

Yii ページャーのデフォルトの実装は、リクエストからのすべてのGET値を保持しますが、検索フォームはPOSTを使用しているため、検索語はページネーション リンクに含まれません。フォーム メソッドを GET に変更すると、目的の動作が得られます。

<?php echo CHtml::beginForm(array('site/search'), 'get'); ?>

PS : IMHO 検索フォームは常にGETメソッドを使用して検索オプションを送信する必要があります。これは、すべての検索用語を保持する URL をコピーし、それを他の人 (開発者など) に送信するか、同じものをさらに複製するために保存する機能を提供するためです。リクエスト。

于 2012-06-05T11:41:12.003 に答える