我将我的分页网址设置为 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 如果我添加任何其他参数,我想要一个错误页面。
我已经在这工作了两个星期,并尽我所能地尝试了。
答案 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');
}