mhndev/yii2-rate

Yii2 多用途评分系统(支持点赞、踩、用其他数字或文字评分)

0.0.5 2016-10-09 19:51 UTC

This package is auto-updated.

Last update: 2024-09-06 09:07:12 UTC


README

目录

Yii2 多用途评分系统(支持点赞、踩、用其他数字或文字评分)

安装

Composer

安装此扩展的最佳方式是通过 composer

运行以下命令之一:

composer require --prefer-dist mhndev/yii2-rate "0.0.*"

或添加

"mhndev/yii2-rate": "0.0.*"

配置

创建配置文件

然后在您的yii2项目配置目录中创建一个名为 rate.php 的配置文件,并填写以下内容

return [
    'userClass' => \app\models\User::class,
    'RateClass' => \mhndev\yii2Rate\Models\Rate::class,

    'items'=>[
        'post' => [
            'class'=> \app\models\Post::class,
            'rate_types' => ['rate','like'],
            'rate_values' => [
                'class' => \mhndev\rate\DiscreteNumberValue::class,
                'values' => ['1','2','3','4','5']
            ]
        ]
    ]
];

查看配置数组,并检查 items 字段是否为要评分或点赞的实体。例如,上面的配置数组中有一个名为 post 的项目。它的字段是

class

指定要评分的实体类

rate_types

您可以为实体拥有多种评分方式,例如,用户可以点赞一个帖子实体并对其进行评分

rate_values

您可以指定实体的可能评分值

之后,您的用户类应实现以下接口

mhndev\rate\Interfaces\iUser

并添加以下方法以实现评分功能持久化。您可以根据项目需求进行更改。

    /**
     * @param $value
     * @param iRateableEntity $entity
     * @param $type
     * @return Rate
     */
    public function doRate($value, iRateableEntity $entity, $type)
    {
        $rate = new Rate;

        $rate->type = $type;
        $rate->entity = get_class($entity);
        $rate->entity_id  = $entity->_id->__toString();
        $rate->owner = static::class;
        $rate->owner_id = Yii::$app->user->identity->id;
        $rate->value = $value;

        $rate->save();

        return $rate;
    }

使用

点赞

以下是一个使用此包的示例代码

    $post = Post::findOne(1);
    $user = Yii::$app->user->identity;
    $user->like($post);

评分

    $post = Post::findOne(1);
    $user = Yii::$app->user->identity;
    $user->rate(+2, $post, 'rate');