Yii 1 Pagination将每个params用户插入

时间:2017-06-17 20:45:54

标签: yii

我将我的分页网址设置为 WWW ... COM /类别/ detail.html?页= 2

我的代码是

$dataProvider = new CActiveDataProvider('Page', array('criteria' => array('condition' => 'status=1', 'condition' => 'category_id=' . $categoryObject -> id, 'order' => 'postDate DESC'), 'pagination' => array('pageSize' => 4,'pageVar'=>'page'), ));
$dataProvider->getData();
var_dump $dataProvider->totalItemCount;

我正在获取确切的数据计数,我的分页网址似乎正常工作。我将URL规则配置为

'index'=>'site/index',
'contact'=>'site/contact',
'privacy'=>'site/privacy',
'sitemap.xml'=>'site/sitemap',
'<category:\w+>' => 'category/detail',
'<category>/page/<page:\d+>' => 'category/detail',
'<category>'=>'category/detail',
'<category:\w+>/<postTitle:.+>' => 'category/post',
'<category:\w.+>/<postTitle:.+>'=>'category/post',

我自动生成的分页URl工作正常,但是, 如果我手动插入url之类的东西 ?WWW ...... COM /类别/ detail.html Page_page&安培;页= 2 ?WWW ...... COM /类别/ detail.html Page_pizza&安培;页= 2

或者我可以将任何愚蠢的东西导航到页面。 现在,在这里我想删除这些额外的参数,或者我希望我的分页URL是严格的 WWW ... COM /分类/ detail.html?页= 2 如果我添加任何其他参数,我想要一个错误页面。

我已经在这工作了两个星期,并尽我所能地尝试了。

1 个答案:

答案 0 :(得分:0)

您应该将分页的"params" property设置为空数组:

'pagination' => array('pageSize' => 4,'pageVar'=>'page', 'params' => array()),

这将避免从分页链接中排除任何GET参数(如果您需要包含任何参数,请在其中添加其名称)。

要抛出错误,您需要检查操作中的参数。

// remove valid prameters from get array.
$arr = array_diff_key($_GET, array_flip(array('page', 'postTitle', 'category')));
// if still there are parameters left, throw an error.
if(count($arr) > 0) {
    throw new CHttpException('invalid parameter');
}