вопрос про пагинатор

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
brain2xml
Сообщения: 43
Зарегистрирован: 2013.07.06, 09:28

вопрос про пагинатор

Сообщение brain2xml »

Добрый день

есть страница http://site/product/potatoes который через parseUrl пересылаеться на страницу
http://site/term/69

прямо во представлении этой страници стоит код

Код: Выделить всё

$dataProvider=new CActiveDataProvider('Node', array('criteria' => $criteria,
                    'pagination' => array(
                        'pageSize' => 20,
                        'pageVar'=>'page',
                    ),));

$this->widget('zii.widgets.CListView', array(
 'viewData' => array( 'hidelab' => true ), 
    'dataProvider'=>$dataProvider,
    'itemView'=>'//node/_view',
...
 
тоесть на странице продукта выводяться все рецепты в которых есть этот продукт. Списком по 20 с постраничной навигацией.

все вроде хорошо, кроме того что ссылка на вторую и далее страници в пагинаторе выглядят как

http://site/term/69?page=2 вместо http://site/product/potatoes?page=2

как убедить использовать чпу в пагинаторе
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: вопрос про пагинатор

Сообщение Ryadnov »

кроме parseUrl нужно также написать createUrl
пример есть тут viewtopic.php?f=3&t=7232#p43847
brain2xml
Сообщения: 43
Зарегистрирован: 2013.07.06, 09:28

Re: вопрос про пагинатор

Сообщение brain2xml »

Спасибо большое за ответ
получилось нечто вроде

Код: Выделить всё

    public function createUrl($manager,$route,$params,$ampersand)
    {
        
        if($route == 'termData/view'){
            if(isset($params['id'])){
                $term = TermData::model()->find('tid=:tid', array(':tid'=>$params['id']));
                     if($term && !empty($term->dst) ){
                          unset($params['id']);
                          return $term->dst . '?' . http_build_query($params);
                }
            }
         
        }
        return false; 
    } 
Ответить