定制 chiliec/yii2-vote 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

chiliec/yii2-vote

最新稳定版本:4.3

Composer 安装命令:

composer require chiliec/yii2-vote

包简介

Provides anonymous voting for any models

README 文档

README

Latest Stable Version Total Downloads Tests License

A flexible and easy-to-use voting extension for Yii2 that provides anonymous voting functionality for any ActiveRecord models. Support likes/dislikes with aggregate ratings and guest voting capabilities.

How yii2-vote works

Features

  • 👍 Like/dislike voting system
  • 👤 Guest and authenticated user voting
  • 🔄 Optional vote changing
  • 📊 Aggregate rating calculations
  • 🎨 Customizable widgets
  • 🏆 Top-rated models widget
  • 🔍 SEO-friendly with rich snippets support
  • 💾 Support for MySQL, PostgreSQL, and SQLite

Requirements

  • PHP 8 or higher
  • Yii2 2.0 or higher

Installation

Step 1: Install via Composer

composer require chiliec/yii2-vote "^4.3"

Step 2: Configure Your Application

Add the following to your application configuration file (e.g., config/main.php):

'bootstrap' => [
    'chiliec\vote\components\VoteBootstrap',
],
'modules' => [
    'vote' => [
        'class' => 'chiliec\vote\Module',

        // Display messages in popover (default: false)
        'popOverEnabled' => true,

        // Global settings for all models
        'allowGuests' => true,        // Allow guests to vote (default: true)
        'allowChangeVote' => true,    // Allow users to change their vote (default: true)

        // Register your models
        'models' => [
            // Simple registration
            \common\models\Post::class,

            // With string notation
            'backend\models\Post',

            // With custom ID
            2 => 'frontend\models\Story',

            // With model-specific settings (overrides global settings)
            3 => [
                'modelName' => \backend\models\Mail::class,
                'allowGuests' => false,      // Only authenticated users can vote
                'allowChangeVote' => false,  // Users cannot change their vote
            ],
        ],
    ],
],

Step 3: Run Migrations

Apply the database migrations to create the required tables:

php yii migrate/up --migrationPath=@vendor/chiliec/yii2-vote/migrations

Usage

Basic Vote Widget

Add the vote widget to your view:

<?= \chiliec\vote\widgets\Vote::widget([
    'model' => $model,
    // Optional: show aggregate rating
    'showAggregateRating' => true,
]) ?>

Top Rated Widget

Display a list of top-rated models:

<?= \chiliec\vote\widgets\TopRated::widget([
    'modelName' => \common\models\Post::class,
    'title' => 'Top Rated Posts',
    'path' => 'site/view',
    'limit' => 10,
    'titleField' => 'title',
]) ?>

Advanced Configuration

Accessing Vote Data in Your Models

Once configured, your models will have access to voting data through the automatically attached behavior:

$post = Post::findOne(1);
echo $post->aggregate->likes;     // Number of likes
echo $post->aggregate->dislikes;  // Number of dislikes
echo $post->aggregate->rating;    // Calculated rating

Manual Behavior Attachment

If you prefer to manually attach the behavior to specific models:

public function behaviors()
{
    return [
        'vote' => [
            'class' => \chiliec\vote\behaviors\VoteBehavior::class,
        ],
    ];
}

Documentation

For detailed documentation, see docs/README.md:

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for details.

Contributors

Alternative Solutions

Looking for other voting solutions for Yii2?

Resources

License

yii2-vote is released under the BSD 3-Clause License. See LICENSE.md for details.

Support

If you find this extension useful, please consider:

  • ⭐ Starring the repository
  • 🐛 Reporting issues
  • 📝 Contributing improvements
  • 💬 Sharing your experience

Made with ❤️ by the Yii2 community

统计信息

  • 总下载量: 6.11k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 71
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 70
  • Watchers: 9
  • Forks: 30
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2015-01-02