hassen meine eigene Frage zu beantworten ... aber dies könnte einige Zeit in einem anderen developper sparen =) (alles darum, gutes Karma ist)
i herausgefunden, dass Sie eine „Optionen“ Array das passieren können Paginator, und innerhalb dieses Arrays können Sie die URL angeben (ein Array von: Controller, Aktion und Parameter), die der Paginator verwenden wird, um die Links zu erstellen. Sie müssen also alle möglichen Routen in die Datei routes.php schreiben. Grundsätzlich gibt es drei Möglichkeiten:
- , wenn die „Seite“ nicht
definiert
Zum Beispiel:
http://localhost/author/John-Doe
der paginator davon aus, dass das es ist die erste Seite. Die entsprechende Route wäre:
Router::connect('/author/:name', array('controller' => 'books','action' => 'filteredByAuthor'),array('pass'=>array('name'),'name'=>'[a-zA-Z\-]+'));
- , wenn die "Seite" ist
definiert
Beispiel für:
http://localhost/author/John-Doe/3 (page 3)
Der Weg wäre:
Router::connect('/author/:name/:page', array('controller' => 'books','action' => 'filteredByAuthor'),array('pass'=>array('name','page'),'name'=>'[a-zA-Z\-]+','page'=>'[0-9]+'));
- schließlich, wenn die Seite und die Sortierung auf der URL definiert ist (indem Sie auf die sort Links klicken, die vom Paginator erstellt wurden).
Zum Beispiel:
http://localhost/author/John-Doe/3/title/desc (John Doe's books ordered desc by title)
Die Route ist:
Router::connect('/author/:name/:page/:sort/:direction', array('controller' => 'books','action' => 'filteredByAuthor'),
array('pass'=>array('name','page','sort','direction'),
'name'=>"[a-zA-Z\-]+",
'page'=>'[0-9]*',
'sort'=>'[a-zA-Z\.]+',
'direction'=>'[a-z]+',
));
auf der Ansicht, die Sie die URL durch das paginator erstellt unscharf zu schalten haben, weil Sie Ihre eigene URL Array angeben werden auf dem Controller:
Controller:
function filteredByAuthor($name = null,$page = null , $sort = null , $direction = null){
$option_url = array('controller'=>'books','action'=>'filteredByAuthor','name'=>$name);
if($sort){
$this->passedArgs['sort'] = $sort;
$options_url['sort'] = $sort;
}
if($direction){
$this->passedArgs['direction'] = $direction;
$options_url['direction'] = $direction;
}
die Variable $options_url
zur Ansicht schicken Satz mit() ... so in der Ansicht Sie dies tun müssen, um:
Ausblick:
unset($this->Paginator->options['url']);
echo $this->Paginator->prev(__('« Précédente', true), array('url'=>$options_url), null, array('class'=>'disabled'));
echo $this->Paginator->numbers(array('separator'=>'','url'=>$options_url));
echo $this->Paginator->next(__('Suivante »', true), array('url'=>$options_url), null, array('class' => 'disabled'));
nun auf die Sortier-Links, die Sie brauchen, um die Variablen 'sort' und 'direction' zu deaktivieren. Früher haben wir sie bereits die Links auf der paginator erstellen, aber wenn wir löschen nicht sie, dann die sort() Funktion verwenden sie ... und wir wont = zu sortieren fähig sein)
$options_sort = $options_url;
unset($options_sort['direction']);
unset($options_sort['sort']);
echo $this->Paginator->sort('Produit <span> </span>', 'title',array('escape'=>false,'url'=>$options_sort));
hoffe, das hilft =)