0

Yii のデモ ブログに簡単な評価システムを追加しようとしています。ID、値、投稿 ID、およびユーザー 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;
}

投稿ビューを更新して、評価フォームをレンダリングしました。

<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>

しかし、ドロップダウン メニューから評価を選択し、[投稿ビュー] ページで [送信] をクリックすると、評価が tbl_rating テーブルに挿入されません。ここで重要なステップが欠落していますか? 前もって感謝します。

4

1 に答える 1

1

評価を DB に保存する必要があります。あなたが示したコードでは、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;
    }
}
于 2013-10-16T09:43:23.730 に答える