2008-09-29 8 views
12

Wenn der Paginator-Helfer in CakePHP-Ansichten verwendet wird, erinnert er sich nicht an Teile der URL, die für meine Verwendung benutzerdefiniert sind.Warum erinnert sich der Paginator nicht an meine benutzerdefinierten Parameter, wenn ich auf Seite 2 gehe?

Zum Beispiel:

http://example.org/users/index/moderators/page:2/sort:name/dir:asc 

hier Moderatoren ist ein Parameter, den ich von diesem Typ filtern hilft. Wenn Sie einen Paginator-Link drücken, wird dieser Link nicht angezeigt.

Antwort

4

Um Alexander Morlands Antwort oben hinzuzufügen, ist es wichtig, daran zu erinnern, dass die Syntax in CakePHP 1 geändert hat.und 3 ist nun:

$this->Paginator->options(array('url' => $this->passedArgs)); 

Dies beschrieben wird weiter in dem pagination in views Abschnitt des CakePHP Buchs.

11

Das Geheimnis ist das Hinzufügen dieser Zeile in der Ansicht:

$ paginator-> Optionen (array ('url' => $ this-> passedArgs));

(Ich habe diese Frage und Antwort, weil es eine viel gestellte Frage ist, und ich halte mit der Antwort zu graben, da ich es erinnern kann nicht.)

0

$ this-> passedArgs die bevorzugte Art und Weise zu tun, dies aus der Sicht.

0

Sie haben mich gerettet! Das hat mir sehr geholfen, Danke.

Ich brauchte einen Weg, um die Parameter zu übergeben, die ich ursprünglich per Post ($ this-> data) an die Paging-Komponente gesendet hatte, so dass meine benutzerdefinierte Abfrage sie weiterhin verwenden würde. Hier

ist, was ich tat.

auf meiner Sicht habe ich

$paginator->options(array('url'=>$this->data['Transaction'])); 

vor dem $ paginator-> zurück ('< < Zurück' Sachen

Dadurch wird die nächste gemacht Link auf dem Paginator wie " .../page: 1/start_date: 2000-01-01% 2000: 00: 00/end_datum: 3000-01-01% 2023: 59: 59/payments_recieved: 1"

Dann auf meinem Controller Ich hatte gerade die Parameter zu erhalten und sie in den $ this-> Daten eingeben, damit meine Funktion wie gewohnt fortsetzen würde:

foreach($this->params['named'] as $k=>$v) 
{ 
    /* 
    * set data as is normally expected 
    */ 
    $this->data['Transaction'][$k] = $v; 
} 

Und es das ist. Paging funktioniert mit meiner benutzerdefinierten Abfrage. :)

0

Die hier Optionen eine gute Führung sind ... können Sie auch für weitere Informationen bei cakephp.org/view/166/Pagination-in-Views auf CakePHP Paginierung überprüfen

-1

Mit dieser param ‚url‘ Sie können nur Ihre bevorzugte Zeichenfolge vor dem String Paginierung in url setzen ..

wenn ich diese tecnique verwenden:

$urlpagin = '?my_get1=1&my_get2=2'; 
$paginator->options = array('url'=>$urlpagin); 

I erhalten nur:

url/controller/action/?my_get1=1&my_get2=2/sort:.../... 

und Kuchen verloren mein erhalten params

Haben Sie eine alternative Technik?

+1

posten Sie bitte keine Frage als Antwort. –

+0

Parameter nicht übergeben wie $ _GET [] ... Ihre URL sollte so etwas wie ... URL/Controller/Aktion/Par1: Val1/Par2: Val2 – Yashvit