Laravel Markable:赋予应用标记能力的利器
去发现同类优质开源项目:https://gitcode.com/
Laravel Markable 是一款专为 Laravel 框架设计的扩展包,它为你提供了一种简单的方法来添加「标记」功能,如点赞(likes)、收藏(bookmarks)和最爱(favorites)等。
安装与配置
通过 Composer 即可轻松安装:
composer require maize-tech/laravel-markable
然后发布并运行迁移文件:
php artisan vendor:publish --tag="markable-migration-bookmark"
php artisan vendor:publish --tag="markable-migration-favorite"
php artisan vendor:publish --tag="markable-migration-like"
php artisan vendor:publish --tag="markable-migration-reaction"
php artisan migrate
如果你需要自定义配置,可以发布配置文件:
php artisan vendor:publish --tag="markable-config"
使用方法
基础操作
要使用这个包,请在你想添加标记功能的模型上添加 Maize\Markable\Markable
特质,并在 $marks
数组中指定你的标记类。例如,实现一个名为 Like
的标记:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Maize\Markable\Markable;
use Maize\Markable\Models\Like;
class Course extends Model
{
use Markable;
protected $fillable = ['title', 'description'];
protected static $marks = [Like::class];
}
现在你可以执行如下的操作:
Like::add($course, $user)
:给课程添加一个赞。Like::remove($course, $user)
:取消用户的赞。Like::toggle($course, $user)
:切换用户对课程的赞状态。Like::has($course, $user)
:检查用户是否已点赞。Like::count($course)
:获取课程的点赞数。
自定义元数据与自定义标记模型
若需添加自定义元数据,可以在添加或切换标记时传递参数:
Like::add($course, $user, ['topic' => $course->topic]);
创建自定义标记模型也相当简单,只需要创建对应的迁移文件和继承 Mark
类的模型。然后在模型中定义 markableRelationName
方法即可。
标记值管理
通过配置文件中的 allowed_values
可以限制特定标记类型的值,比如用于实现不同表情反应。你也可以使用通配符允许任何值。
应用场景
Laravel Markable 在许多地方都大有用途。它可以应用于:
- 社区论坛:让用户能够点赞帖子。
- 新闻网站:允许用户收藏感兴趣的文章。
- 在线教育平台:用户可以标记喜欢的课程。
- 内容分享平台:用户可以为分享的内容添加各种反应。
项目特点
- 易于集成:只需添加特质并配置,快速启用标记功能。
- 高度定制化:支持自定义标记模型、自定义元数据,以及值限制。
- 性能优化:每个标记类型都有单独的数据库表,提高查询效率。
- 灵活的查询:可以基于用户或标记值进行筛选和统计。
结论
Laravel Markable 提供了一个强大且易用的方式来增强你的 Laravel 应用的互动性。无论是简单的点赞功能还是复杂的情绪反应系统,都能轻松应对。立即尝试,让你的应用更富生机与活力!
去发现同类优质开源项目:https://gitcode.com/