2012-06-04 67 views
0

我有一個簡單的搜索表單(site/search.php)將搜索字符串發送到控制器並顯示搜索結果(如果可用)。我正在使用CGridView來顯示數據。 UPDATE這是我的看法(網站/ search.php中)文件:Yii CGridView Pager生成鏈接錯誤?

 <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嗎?

+0

你的搜索動作是什麼樣子的?不需要整個代碼,只需要渲染代碼 –

+0

雅,我已更新問題。感謝您的幫助! – Davuz

+0

好的,還有一件事,你的文件是怎麼樣的?在哪個文件(視圖)是搜索表單?在哪個視圖(文件)是網格? –

回答

1

Yii的尋呼機的默認實現將保留所有得到請求值,但搜索表單使用POST ,所以搜索術語未包含在分頁鏈接。嘗試改變形式的方法來獲得,你會得到期望的行爲:

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

PS:恕我直言,搜索表單應該使用GET 方法發送搜索選項,因爲它提供了複製持有URL能力所有搜索條件,然後將其發送給其他人(例如發送給開發人員)或將其保存以進一步再現相同的請求。

+0

是的,我知道一個流行的搜索頁面應該使用** GET **方法,但是當使用** GET **方法時,點擊提交按鈕後,我的頁面直接到'r = site/index&searchText = string_to_searching', ,我的搜索行爲是'r =站點/搜索'。如何使它不直接指向'site/index'? – Davuz

+0

非常感謝!當我使用'<?php echo CHtml :: beginForm(array('site/search'),'get'); ?>,它的效果非常好! – Davuz