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.
The dataProvider
property of a CListView
should be a CActiveDataProvider
(or a different data provider). Try
'dataProvider' => new CActiveDataProvider($model),
instead.