Url 如何控制Yii CListView中的page get参数?

Url 如何控制Yii CListView中的page get参数?,url,yii,Url,Yii,使用Yii 1.1.12。我在关闭ajax的情况下遇到了一个问题: <?php $this->widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', 'ajaxUpdate' => false, )); ?> 指向第二页的链接的url如下所示: http://www.example.com/products

使用Yii 1.1.12。我在关闭ajax的情况下遇到了一个问题:

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

指向第二页的链接的url如下所示:

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

我希望url看起来像:

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

我怎样才能做到这一点

(另外一个好处是还可以描述如何获得类似
http://www.example.com/products/page/2

更新

正如elbek所指出的,我看到CListView有一个类型为的
pager
属性。这又有一个
pages
属性,类型为,该属性描述为:

存储当前页面索引的GET变量的名称。默认为 “页面”

听起来它可能就是我要找的,但不确定如何从CListView修改它。

我认为CListView有属性(从其父类)

您可以尝试为此设置一些属性。我认为这是CLinkPager的例子

我认为CListView有属性(来自其父类)


您可以尝试为此设置一些属性。我认为这是CLinkPager的例子

在配置中启用urlManager组件。并在顶部添加以下规则

'urlManager'=>array(
    ......
    'rules'=>array(
        'products/page/<Product_page:\d+>'=>'products/index', //Add it in top
        ...........
        ...........
    ),
),
'urlManager'=>数组(
......
'规则'=>数组(
'产品/页面/'=>'产品/索引',//将其添加到顶部
...........
...........
),
),
上面的规则将创建一个类似
http://www.example.com/products/page/2

规则
products/index
中的值部分是productscontroller和indexaction(这很重要,请将其指向您的实际路线)

你甚至可以用任何你想要的方式创建URL

ex1:

'products/'=>'products/index'

将为您提供
http://www.example.com/products/2

ex2

'TheAvengers/vs/Loki/'=>'products/index'


将为您提供
http://www.example.com/TheAvengers/vs/Loki/2

在配置中启用urlManager组件。并在顶部添加以下规则

'urlManager'=>array(
    ......
    'rules'=>array(
        'products/page/<Product_page:\d+>'=>'products/index', //Add it in top
        ...........
        ...........
    ),
),
'urlManager'=>数组(
......
'规则'=>数组(
'产品/页面/'=>'产品/索引',//将其添加到顶部
...........
...........
),
),
上面的规则将创建一个类似
http://www.example.com/products/page/2

规则
products/index
中的值部分是productscontroller和indexaction(这很重要,请将其指向您的实际路线)

你甚至可以用任何你想要的方式创建URL

ex1:

'products/'=>'products/index'

将为您提供
http://www.example.com/products/2

ex2

'TheAvengers/vs/Loki/'=>'products/index'


将为您提供
http://www.example.com/TheAvengers/vs/Loki/2

此外,要更改
页面变量
,您必须修改
$dataProvider
。在控制器操作中定义控制器时,可以执行此操作:

$dataProvider=new CActiveDataProvider('Products',array(
    'pagination'=>array(
        'pageVar'=>'page'
    )
));
或者,您当然可以在视图本身中修改
$dataProvider
,然后再在
CListView
中使用它:(由于问题分离,不建议使用)

但是有了这个改变,你的url看起来像
http://www.example.com/products/page/2
您需要稍微更改Suvera回答中的
urlManager
规则:

'products/page/<page:\d+>'=>'products/index',
“产品/页面/”=>“产品/索引”,


注意:如果不需要该类型的url,则不需要上述规则,只需指定
pageVar
即可。

此外,要更改
pageVar
,必须修改
$dataProvider
。在控制器操作中定义控制器时,可以执行此操作:

$dataProvider=new CActiveDataProvider('Products',array(
    'pagination'=>array(
        'pageVar'=>'page'
    )
));
或者,您当然可以在视图本身中修改
$dataProvider
,然后再在
CListView
中使用它:(由于问题分离,不建议使用)

但是有了这个改变,你的url看起来像
http://www.example.com/products/page/2
您需要稍微更改Suvera回答中的
urlManager
规则:

'products/page/<page:\d+>'=>'products/index',
“产品/页面/”=>“产品/索引”,


注意:如果你不需要那种类型的url,你也不需要上面的规则,只需指定
pageVar
就可以了。

谢谢,这似乎完美地回答了我的奖金问题。对我问题的第一部分有什么想法吗(例如,变成你也可以用urlManager解决吗?产品页面:这就是Yii创建和理解查询参数的方式…
get_类($model)“\u page”
。您可能需要apache重写规则,规则应该将page=2重写为Product\u page=2,以便Yii理解。谢谢。看起来这完美地回答了我的奖金问题。对我问题的第一部分有什么想法吗(也就是说,变成你能用urlManager解决吗?产品页面:这就是Yii创建和理解查询参数的方式…
get\u class($model)。“\u页面”
。你可能需要apache重写规则,规则应该将page=2重写为Product\u page=2,以便Yii理解它。