I have started working on yii framework and I am following the yii blog tutorial to learn basics of yii framework in this tutorial they have used a ClistView in posts view but i am getting an exception
This is the code that i have used in view file:
$this->breadcrumbs=array( 'Posts'=>array('index'), $model->post_id, ); $this->menu=array( array('label'=>'List Posts', 'url'=>array('index')), array('label'=>'Create Posts', 'url'=>array('create')), array('label'=>'Update Posts', 'url'=>array('update', 'id'=>$model->post_id)), array('label'=>'Delete Posts', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->post_id),'confirm'=>'Are you sure you want to delete this item?')), array('label'=>'Manage Posts', 'url'=>array('admin')), ); ?> <?php if( !empty($_GET['tag']) ) : ?> <h1>Posts Tagged with <em><?php echo CHtml::encode($_GET['tag']); ?></em></h1> <?php endif; ?> <?php $this->widget('zii.widgets.CListView', array( 'dataProvider' => $model, 'itemView' => '_view', 'template' => "{items}n{pager}", ));
This is what my PostsController contains:
/** * Displays a particular model. * @param integer $id the ID of the model to be displayed */ public function actionView($id) { $post = $this->loadModel($id); $this->render('view',array( 'model'=>$post, )); } /** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { if( $this->_model === NULL ) { if( Yii::app()->user->isGuest ) $condition = 'post_status='.Posts::STATUS_PUBLISHED.' or post_status='.Posts::STATUS_ARCHIVED; else $condition = ''; $this->_model = Posts::model()->findByPk($id, $condition); if($this->_model === NULL) throw new CHttpException(404, 'The requested page does not exist.'); } return $this->_model; }
I can’t find out where I am doing wrong.
Advertisement
Answer
The dataProvider
property of a CListView
should be a CActiveDataProvider
(or a different data provider). Try
'dataProvider' => new CActiveDataProvider($model),
instead.