我正在尝试为Yii的演示博客添加一个简单的评级系统。我添加了一个评级模型,其中包含id,value,post id和user id。
我在Post模型中添加了一个addRating()方法:
public function addRating($rating)
{
$rating->post_id=$this->id;
$rating->user_id=Yii::app()->user->getId();
}
我还在PostController中添加了一个newRating()方法:
protected function newRating($post)
{
$rating = new Rating;
if(isset($_POST['Rating']))
{
$rating->attributes=$_POST['Rating'];
if($post->addRating($rating))
{
Yii::app()->user->setFlash('ratingSubmitted', 'Thanks for your rating!');
$this->refresh();
}
}
return $rating;
}
我更新了Post视图以呈现评级表:
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'rating-form',
'enableAjaxValidation'=>false,
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'val'); ?>
<?php echo $form->dropDownList($model,'val',array(1,2,3,4,5)); ?>
<?php echo $form->error($model,'val'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<br/>
<?php $this->endWidget(); ?>
</div>
但是,当我从下拉菜单中选择评级并在Post视图页面上点击提交时,它不会插入到tbl_rating表中。我错过了这里必不可少的一步吗?提前谢谢。
答案 0 :(得分:1)
您需要在数据库中保存您的评分!在您显示的代码中,您无法保存ActiveRecord
对象$rating
。
您应该执行以下操作:
public function addRating($rating)
{
$rating->post_id=$this->id;
$rating->user_id=Yii::app()->user->getId();
if($rating->save()) {
return true;
} else {
return false;
}
}