2011-12-08 11 views
7

Jestem nowy w Yii. Chcę zaimplementować niestandardową paginację. Chcę zmienić wygląd pagera. Jak mogę zmienić etykiety linków pagera?Jak mogę dostosować etykiety dla pagera w Yii?

Chcę linki do wyglądać tak:

<< < 1 2 3 4 > >> 

zamiast domyślnego wyglądu, który jest tak:

[first] [previous] 1 2 3 4 [next] [last] 

Używam CListView do wyświetlania danych, które mam skonfiguruj w ten sposób:

$this->widget('zii.widgets.CListView', array(
      'dataProvider' => $categoryProjects, 
      'itemView' => '_itemDetailsView',   
      'ajaxUpdate'=>false, 
     )); 

Czy ktoś może mi powiedzieć, jak mam zrobić gwiazdkę t z tym? Widziałem kilka postów, ale nie mogłem uzyskać prawidłowych informacji.

Z góry dziękuję.

Odpowiedz

12

Należy ustawić właściwość pager dla CListView. Domyślnie jest to CLinkPager; nie trzeba zmienić, że (ten składnik ma swoje potrzeby kryte), ale trzeba go skonfigurować:

$this->widget('zii.widgets.CListView', array(
      'dataProvider' => $categoryProjects, 
      'itemView'  => '_itemDetailsView', 
      'ajaxUpdate' => false, 
      'pager'  => array(
           'class'   => 'CLinkPager', 
           'firstPageLabel' => '<<', 
           'prevPageLabel' => '<', 
           'nextPageLabel' => '>', 
           'lastPageLabel' => '>>', 
          ), 
     )); 

Aktualizacja: Jeśli chcesz „piec w” powyższą konfigurację niestandardową do wszystkich listy widoki w aplikacji, musisz utworzyć nowy komponent CustomListView pochodzący z CListView. Więc trzeba tej klasy:

Yii::import('zii.widgets.CListView'); 

class CustomListView extends CListView { 
    public function init() { 
     parent::init(); 

     $this->pager = array( 
          'class'   => 'CLinkPager', 
          'firstPageLabel' => '<<', 
          'prevPageLabel' => '<', 
          'nextPageLabel' => '>', 
          'lastPageLabel' => '>>', 
         ); 
    } 
} 

Po uwzględnieniu tego, można po prostu użyć CustomListView jak listy widget zamiast zii.widgets.CListView.

+0

Thanks Jona za szybką odpowiedź. Czy istnieje sposób na zaimplementowanie tego w jednym pliku i zostanie on automatycznie zastosowany do wszystkich plików. Użyłem tego cListView w wielu plikach. A także gdzie mogę zmienić CSS dla numerów stron? –

+0

@RSK: Zobacz [tę dyskusję] (http://www.yiiframework.com/forum/index.php?/topic/26055-change-the-general-pager-css-for-all-application/) dla CSS. Niedługo zaktualizuję odpowiedź na inne pytanie. – Jon

+0

Jak ograniczyć numery stron do 5? Domyślne ustawienia pokazujące 10 numerów stron. Próbowałem tego publicznego $ maxButtonCount = 5; ale to nie działa dla mnie. Jakieś sugestie? Chciałbym również zmienić nieco układ, aby to polubić <1 ... 8 9 10 11 12 ... 30> ponieważ pokazuje 10 stron .. –