2017-06-17 1 views
0

ich meine Paginierung url haben www ... com/Kategorie/detail.html? Page = 2Yü 1 Paginierung nimmt jede params Benutzer eingefügt

gesetzt für die mein Code,

$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;

Ich bekomme die genauen Daten zählt und meine Paginierung URL funktioniert. Ich habe meine URL-Regel konfiguriert als

'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',

mein Auto erzeugt Paginierung URl arbeiten gut, aber Wenn ich manuell url so etwas wie www ...... com/Kategorie einfügen/detail.html? Page_page & page = 2 www ...... com/Kategorie/detail.html? Page_pizza & page = 2

oder irgendwelche dummen Dinge, die ich setzen sie auf die Seite navigiert. Nun, hier möchte ich diese zusätzlichen Parameter entfernen oder ich möchte meine Paginierung URL zu www ... com/category/detail.html? Page = 2 und wenn ich irgendwelche zusätzlichen Parameter setze ich eine Fehlerseite wollen .

Ich habe in diesem für 2 Wochen gearbeitet und versucht, alle möglichen Möglichkeiten, die ich könnte.

Antwort

0

Sie sollten die „params“ Eigenschaft der Paginierung auf ein leeres Array gesetzt:

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

Dadurch wird vermieden, alle GET-Parameter von Paginierung Links auszuschließen sind (wenn Sie enthalten müssen, fügen Sie ihre Namen dort).

Um einen Fehler zu erzeugen, müssen Sie nach den Parametern in Ihrer Aktion suchen.

// 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'); 
}