1

我正在 yii 中开发 CStar 评级小部件。我做了如下:

$review = Reviews::model()->findAll();
        foreach($review as $review)
        {
           $rate=$review['rating'];
           $this->widget('CStarRating',array(
                'name'=>'rating',
                'minRating'=>1,
                'maxRating'=>5,
                'starCount'=>5,
                'value'=>$rate,
                'readOnly'=>true,
            ));
            echo "<br/>";
            echo $review['title'];
            echo "<br/>";
            echo "<font color='brown'>".ucfirst($review['name'])."</font><br/>";
            echo $review['body'];
            echo "<hr/><br/>";
        }
    ?>

当我在数据库中输入一条评论时,没关系,但是当我添加第二条评论时,两个评论星混合在一起。

在这种情况下我该怎么办?

4

1 回答 1

1

您正在使用小部件的“名称”属性,因此 javascript 变得混乱,因为将有超过 1 个具有相同名称的输入,您需要做的是使用小部件的“模型”和“属性”选项

 $this->widget('CStarRating',array(
                'attribute'=>'rating', //change to the attribute in your model
                'model'=>$review,
                'minRating'=>1,
                'maxRating'=>5,
                'starCount'=>5,
                'value'=>$rate,
                'readOnly'=>true,
            ));

您还需要从以下位置重命名 foreach 中的变量:

$review = Reviews::model()->findAll();
foreach($review as $review)

$reviews = Reviews::model()->findAll();
foreach($reviews as $review)
于 2013-01-16T18:11:34.027 回答