1

Yii 1.1.12 を使用。ajax をオフにしたCListViewがあります。

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_view',
    'ajaxUpdate' => false,
)); ?>

2 番目のページへのリンクの URL は次のようになります。

http://www.example.com/products?Product_page=2

URLを次のようにしたい:

http://www.example.com/products?page=2

どうすればこれを達成できますか?

(ボーナスは、のようなURLを取得する方法も説明することですhttp://www.example.com/products/page/2

アップデート

elbek が指摘したように、 CListView には CLinkPager 型のプロパティpagerがあることがわかります。これには、次のように記述されるプロパティpageVarを持つタイプCPaginationのプロパティがあります。pages

現在のページ インデックスを格納する GET 変数の名前。デフォルトは「ページ」です。

それは私が探しているもののように聞こえますが、CListView からこれを変更する方法がわかりません。

4

3 に答える 3

5

さらに、を変更するpageVarには、を変更する必要があります$dataProvider。これは、コントローラーアクションで定義するときに実行できます。

$dataProvider=new CActiveDataProvider('Products',array(
    'pagination'=>array(
        'pageVar'=>'page'
    )
));

または、もちろん$dataProvider、ビュー自体でを変更してから、CListView:(非推奨-関心の分離のため)で使用することもできます。

$dataProvider->pagination=array('pageVar'=>'page');
$this->widget('zii.widgets.CListView', array(/*rest of your code*/));

ただし、この変更により、URLをSuveraの回答からhttp://www.example.com/products/page/2ルールを少し変更する必要があるように見せることができます。urlManager

'products/page/<page:\d+>'=>'products/index',

注:そのタイプのURLが必要ない場合は、上記のルールは必要ありません。指定するだけpageVarで可能です。

于 2012-10-03T04:42:55.093 に答える
3

config で urlManager コンポーネントを有効にします。そして、先頭に次のルールを追加します。

'urlManager'=>array(
    ......
    'rules'=>array(
        'products/page/<Product_page:\d+>'=>'products/index', //Add it in top
        ...........
        ...........
    ),
),

上記のルールは、次のような URL を作成しますhttp://www.example.com/products/page/2

ルールの値の部分products/index製品コントローラーとインデックスアクションです (これは重要なので、実際のルートに指摘してください)。

任意の方法で URL を作成することもできます。

例 1:

'products/<Product_page:\d+>'=>'products/index'

あなたにあげます http://www.example.com/products/2

例 2

'TheAvengers/vs/Loki/<Product_page:\d+>'=>'products/index'

あなたにあげます http://www.example.com/TheAvengers/vs/Loki/2

于 2012-10-01T05:47:46.010 に答える
0

CListView にはpager属性があると思います(親クラスから)

これにいくつかの属性を設定してみることができます。CLinkPager インスタンスだと思います。

于 2012-09-30T21:29:16.117 に答える