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 pager 的默认实现保留了请求中的所有GET值,但是您的搜索表单使用POST,因此搜索词不包含在分页链接中。尝试将表单方法更改为 GET,您将获得所需的行为:

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

PS:恕我直言,搜索表单应始终使用GET方法发送搜索选项,因为它提供了复制包含所有搜索词的 URL 的能力,然后将其发送给其他人(例如开发人员)或保存以进一步复制相同要求。

于 2012-06-05T11:41:12.003 回答