[Urlmanager] Url Zawiera ?undefined=

Mam taki problem. Jest sobie paginacja na stronie. Po użyciu urlmanagera:

‘/page/<page:\d+>’=>’/site/index’,

i po kliknięciu w jakąś stronę z paginacji, w url’u mam taki adres: /page/2?undefined=

Jak się tego pozbyć? Bez "przyjaznych linków" adres wygląda tak: /index.php?r=site/index&page=2

htaccess zawiera:

Options +FollowSymLinks

IndexIgnore /

<IfModule mod_rewrite.c>

RewriteEngine on

if a directory or a file exists, use it directly

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

otherwise forward it to index.php

RewriteRule . index.php

</IfModule>

Jeśli gdzieś pojawia się słowo kluczowe ‘undefined’ to zwykle w wyniku błędów w JavaScript. Używasz stronicowania z widgetów Yii, które mają trochę kodu JavaScript. Wklej konfigurację tychże widgetów i dataProvidera, który je zasila.

Widget wygląda tak:

<?php

$this->widget(‘zii.widgets.CListView’, array(

'dataProvider' =&gt; &#036;model-&gt;search(),


'itemView'=&gt;'_view',


'enableHistory' =&gt; TRUE,


'id' =&gt; 'ajaxListView',


'sortableAttributes'=&gt;array('id_category','create_time','url'),

));

?>

Używam przy nim filtrowania ajaxowego, ale wydawało mi się, że nie ma to się nic do paginacji:

         if(isset(&#036;_GET['ajax']) &amp;&amp; &#036;_GET['ajax']=='ajaxListView')   {


             &#036;this-&gt;renderPartial('index',array(


                 'model'=&gt;&#036;model,


             ));


             


         } else  {


             &#036;this-&gt;render('index',array(


                 'model'=&gt;&#036;model,


             ));


           


         }     

I zauważyłem, że jak zmienię cały powyższy kod na:

$this->render(‘index’,array(

                 'model'=&gt;&#036;model,


             ));

Błąd się nie pojawia (jest wtedy /page/2), więc chyba faktycznie coś z js

Provider wygląda tak:

             return new CActiveDataProvider(get_class(&#036;this), array(


                  'criteria' =&gt; &#036;criteria,


                


              ));

Dodatkowo z innej beczki, jak w urlmanagerze ustawić taki adres:

/?TblProject[id_shop]=1&TblProject[id_category]=1

na

/shop/1/category/1/

i /?TblProject_sort=id_category.desc -> /sort/category/desc (tu może być też .asc na /asc)

  • takie adresy mam po wykorzystaniu enableHistory a nie wiem jak zapisać te tablice z url

ok z tym undefined sobie poradziłem, był bug w yii przy korzystaniu z enableHistory dla CListView, https://github.com/yiisoft/yii/pull/2079/files