Skip to content

chiliec/yii2-vote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

95 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Vote for Yii2

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

About

Provides voting for any model πŸ‘ πŸ‘Ž

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages