2012-09-27 8 views
6

CGridViewのajaxUrlパラメータを使用しようとしていますが、効果がありません。YiiでCGridViewのajaxUrlパラメータを使用するにはどうすればよいですか?

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'ge-cg-'.$myLib['id'], 
    'filter'=>$geCGModel, 
    'dataProvider'=>$dataProvider, 
    'columns'=>$columns, 
    'ajaxUrl'=>Yii::app()->createUrl('Something/search'), 
)); 

これは、CGridViewウィジェットのajax URLを上書きしているようではありません。グリッドのAjaxリクエストは、それをレンダリングしたコントローラ(グリッド自身のコントローラとは異なる)に依然として行きます。

ありがとうございます!

答えて

10

ajaxUrlプロパティは、「列単位のフィルタ」と「詳細検索」の両方の検索にのみ機能します。並べ替えリンクと改ページリンクは、指定した$dataProviderから生成されます。 CGridViewとCDataColumnのソースを調べて、それぞれpaginationsortingがdataProviderからどのように抽出されているかを確認できます。

は、したがって、あなたは、あなたは多少このように、CPaginationオブジェクト、および$dataProviderのCSortオブジェクトの両方のためのrouteプロパティを設定する必要があり、それらのリンクも指定したいという同じajaxUrlを使用する場合:

$dataProvider=new CActiveDataProvider('Modelname',array(
    'criteria'=>$criteria, 
    'pagination'=>array(
     'route'=>'something/search' 
    ), 
    'sort'=>array(
     'route'=>'something/search' 
    ) 
)); 

これはあなたの現在のCGridView設定と組み合わせて、期待どおりに動作するはずです。

+0

私は正しくあなたを得たと思うが、あなたのURLをもう一度見て、それは(あなただけのページングと並べ替えではなく)そのajaxurlで検索する検索したいようです。検索で回答に記載されている変更を加えずに検索を行う必要があります。検索がうまくいかない場合は、教えてください。 –

+1

優れています。ありがとうございました。私は正しいURLにすべてをデフォルトする二次的なajaxリクエストを作成することでそれを回避することになりましたが、これは将来有用なはずです。 – glyph

+0

助けてくれてうれしいですが、私はちょうど興味があります、あなたの検索はそのajaxUrlで働いていましたか?そうでない場合は、それがグリッドビュー(列を引いたもの)全体の構成だったかどうか教えてください。または他のプロパティも定義されていますか?またyiiのバージョンを教えてください。 –

関連する問題