yii родительский ребенок вопрос подкачки Clistview - PullRequest
1 голос
/ 07 декабря 2011

Я использую Yii framework из php. Мой сценарий - это количество проектов, и у всех проектов есть посты. Для проектов я использовал Clistview и в «itemView» этого элемента управления указана другая страница с именем «_post». На странице '_post' снова указывается ClistView для отображения сведений о записи.

Но проблема заключается в том, что в деталях поста происходит постраничное отображение Clistview проектов и при изменении номера страницы одной детали поста на номер следующей страницы все номера страниц клиста в деталях поста меняются.

Я также указал подробности записи clistview 'id', но не зря.

Для проектов:

<?php
$this->pageTitle=Yii::app()->name . ' - Project Post Details';
echo '<div class="listViewBorder">';
$this->widget('zii.widgets.CListView', 
              array(
                  'dataProvider'=>$dataProvider,
                  'id'=>'projectListView',
                  'itemView'=>'_post', // refers to the partial view
                  'enablePagination'=>true,
              ));
echo '</div><br />'
?> 

Для деталей сообщения:

<?php
echo '<h2>Project: '. CHTML::encode($data->title).' </h2>';
echo '<div class="listViewBorder">';
$this->widget('zii.widgets.CListView',
              array(
                  'dataProvider'=>$this->CallProjectPosts($data->id),
                  'id'=>'postListView'.$data->id,
                  'itemView'=>'_postDetail',
                  'enablePagination'=>true,
              ));
echo '</div>'
?>

1 Ответ

1 голос
/ 10 декабря 2011

Вот так я, наконец, заработал, он будет работать, пока вы не найдете лучшее решение. Я предполагаю, что project_id является внешним ключом в вашей таблице сообщений. Это создаст (используя gii) необходимое отношение HAS_MANY в модели вашего проекта, что, в свою очередь, позволяет нам легко получать доступ к публикациям проекта, не вызывая метод CallProjectPosts.

Так что измените ваш пост (_post.php):

<?php
echo '<h2>Project: '. CHTML::encode($data->title).' </h2>';
echo '<div class="listViewBorder">';

$relatedPosts=new CArrayDataProvider($data->posts, // this is where the HAS_MANY relation comes into play
        array(
            'pagination'=>array(
                'pageSize'=>1, // whatever your size was
            )
        )
);
$this->widget('zii.widgets.CListView',
           array(
               'dataProvider'=>$relatedPosts,
               'id'=>'postListView'.$data->id,
               'itemView'=>'_postDetail',
               'enablePagination'=>true,
           ));
echo '</div>'
?>

Для списка проектов:

<?php
$this->pageTitle=Yii::app()->name . ' - Project Post Details';
echo '<div class="listViewBorder">';
$this->widget('zii.widgets.CListView', 
          array(
              'dataProvider'=>$dataProvider,
              'id'=>'projectListView',
              'itemView'=>'_post', // refers to the partial view
              'enablePagination'=>true,
              'ajaxUpdate'=>false
          )
);
echo '</div><br />'
?>

Как вы увидите, я отключил ajaxUpdate дляпросмотр списка проектов, если он включен, то решение не будет работать, поэтому, если вам необходимо отображать / обновлять список проектов также через ajax, то это не будет работать, в настоящее время только сообщения проекта обновляются через ajax.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...