Url 如何控制Yii CListView中的page get参数?
使用Yii 1.1.12。我在关闭ajax的情况下遇到了一个问题: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
<?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理解它。