Yii Framework Forum: CActiveDataProvider e Pagination - Yii Framework Forum

Jump to content

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

CActiveDataProvider e Pagination Rate Topic: -----

#1 User is offline   Diegovl 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 27-February 11

Posted 12 March 2011 - 11:09 PM

Ciao ragazzi, di nuovo.

Poniamo che io voglio usare CActiveDataProvider per recuperare un post da ID e visualizzarne i commenti.
Allora in actionView) scrivo:

	public function actionView($id)
	{
		$dataProvider=new CActiveDataProvider($this->loadModel($id), array(
            'criteria'=>array(
                'order'=>'data DESC',
                'with'=>array('autore', 'comments'),
            ),
            'pagination'=>array(
                'pageSize'=>1,
            ),
        ));

        $this->render('view',array(
			'dataProvider'=>$dataProvider,
            'id'=>$id
		));
	}


Per la view invece:

<h1>View Post #<?php echo $id; ?></h1>

<?php $this->widget('zii.widgets.CListView', array(
	'dataProvider'=>$dataProvider,
	'itemView'=>'_view2',
)); ?>


In _view2 invece recupero i valori del post tramite $data->attributo e con un foreach quello dei commenti.

Come faccio a utilizzare la paginazione per i commenti e non per il post?

Grazie!
0

#2 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 14 March 2011 - 06:29 AM

Mamma mia che casino!!

Allora, non usare un CActiveDataProvider per un solo elemento, carica semplicemente il model:

$model= $this->loadModel($id);


Ora prepariamo il dataProvider per i post:


 $dataProvider=new CActiveDataProvider('comments', array(
            'criteria'=>array(
                'order'=>'data DESC',
                'condition'=>'post_id= :post',
                'params'=>array(':post'=>$model->id),
                'with'=>array('autore', 'comments'),
            ),

        ));


In generale: usa semplicemente Post::model()->findByPk() per ottenere un model (in questo caso viene fatto nella funzione loadModel) e usa i dataprovider per gestire elenchi di model.
2

#3 User is offline   Diegovl 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 27-February 11

Posted 14 March 2011 - 10:53 AM

D'accordo, claro :D

Io l'avevo pensata in quel modo per evitare la doppia query.
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