Yii Framework Forum: Cactivedataprovider I Clistview - Podział Na Strony - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cactivedataprovider I Clistview - Podział Na Strony Rate Topic: -----

#1 User is offline   dzejks 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 20-March 13

Posted 25 March 2013 - 03:52 AM

Witam,

Mam pewien problem związany z wysłaniem obiektu CActiveDataProvider do CListView i podziału wyników na strony.

            $dataProvider=new CActiveDataProvider('Product', array(
                    'criteria'=>array(
                        'with'=>array('...'),
                        'join'=>'INNER JOIN ...,
                        'order'=>'t.sort_order ASC',
                        'condition'=>'...',
                        'together'=>true,
                    ),
            ));


W widoku ustawiam sobie rozmiar strony i wyświetlam wyniki korzystając z widgetu CListView

        $dataProvider->pagination->pageSize=15;
        
        $this->widget('zii.widgets.CListView', array(
            'dataProvider'=>$dataProvider,
            'itemView'=>'_view',
            'enablePagination'=>true,
        )); 


W konkretnym przypadku CADP zwraca 15 wyników. PageSize również jest ustawiony na 15. I co otrzymuję? Otrzymuję wyświetlone 6 wyników z napisem u góry 'Wyświetlono rezultaty 1-6 z 15.' Wszystko fajnie ale na dole nie mam paska paginacji.

Dopiero ustawiając pageSize na wartość poniżej 15 pojawia się pasek paginacji, całkiem sensowne.

Teraz ustawiając przykładową wartość 10, otrzymuję... 5 wyników. No świetnie, to chociaż poprzeglądam to sobie z pomocą paska paginacji - a tu nie ma tak łatwo! Są tylko dwie strony, z czego pierwsza pokazuje 1-5 z 15 a druga nagle 11-14 z 15.

Jak to skonfigurować żeby działało poprawnie?

Pozdrawiam.
0

#2 User is offline   mirunho 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 170
  • Joined: 19-December 12
  • Location:Gdansk, Poland

Posted 25 March 2013 - 07:13 AM

spróbuj usunąć order i zobaczyć co się stanie :>
0

#3 User is offline   aquasite.pl 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 20-May 11

Posted 26 March 2013 - 04:06 PM

Czasem miałem takie problemy przy wykorzystywaniu JOIN (więcej niż jeden). Wywal najpierw 'with'=>'' i zobacz czy będzie dobrze wyświetlało. Jeśli tak, to będziesz wiedział gdzie szukać problemu.
Posted Image
Agencja interaktywna Itzen.pl
Informatyczne rozwiązania dla firm.
Programowanie, Pozycjonowanie, Testy A/B, Reklama.
0

#4 User is offline   kradam 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 22-October 12

Posted 27 March 2013 - 04:19 AM

W przykładzie z Yii API doc:
$dataProvider=new CActiveDataProvider('Post', array(
    'criteria'=>array(
        'condition'=>'status=1',
        'order'=>'create_time DESC',
        'with'=>array('author'),
    ),
    'pagination'=>array(
        'pageSize'=>20,
    ),
));

paginacja jest ustawiana w momencie tworzenia obiektu, być może obiekt głupieje po tym, jak zmieniasz ją później? Strzelam, ale życie uczy, aby kopiować przykłady jota w jotę i w razie konieczności zmieniać małymi krokami.
Dodatkowo o ile pamiętam, to od wersji 1.13 nie zaleca się stosowania aliasu t w zapytaniach, trzeba go pobrać odpowiednią metodą.
0

#5 User is offline   qwerty 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 290
  • Joined: 20-November 08

Posted 27 March 2013 - 06:29 AM

View Postkradam, on 27 March 2013 - 04:19 AM, said:

Dodatkowo o ile pamiętam, to od wersji 1.13 nie zaleca się stosowania aliasu t w zapytaniach, trzeba go pobrać odpowiednią metodą.


Możesz doprecyzować?
0

#6 User is offline   kradam 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 22-October 12

Posted 28 March 2013 - 02:45 AM

Wpadł mi w oko fragment z pliku UPGRADE:
The main problem here is that you can not use the `t`-alias for your table anymore, you have to change your code to use the table alias currently in use as this is different in relational context. You can get that alias by calling `$this->getTableAlias();` in your active record class or `$this->owner->getTableAlias()` in behavior context.

Example:
$criteria->condition = 't.myfield = 1';

You need to change that to:
$alias = $this->owner->getTableAlias();
$criteria->condition = $alias.'.myfield = 1';

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users