mwazovzky / favoritable
Laravel 扩展包,允许应用程序用户对 Eloquent 模型实例进行收藏/取消收藏
v0.0.5
2017-11-09 15:44 UTC
This package is auto-updated.
Last update: 2024-09-10 17:38:22 UTC
README
项目:mwazovzky\favoritable
描述
Laravel 扩展包。允许应用程序用户收藏/取消收藏 Eloquent 模型实例。
版本:0.0.6
变更日志
0.0.6 添加了前端资源:<favorite-vidget>
Vue 组件
0.0.5 添加了前端资源:<favorite>
Vue 组件和 favorite
vidget(blade 部分视图)
0.0.4 添加了收藏/取消收藏模型的路由和控制台
0.0.3 扩展包自动发现(自 Laravel 5.5 开始)
0.0.2 添加了 Model::favoritedBy() 方法,定义了多对多多态关系
0.0.1 初始项目脚手架
安装
- 将包拉入 Laravel 项目
composer require mwazovzky/favoritable
- 对于 Laravel 5.4 或更低版本,在
/config/app.php
中注册包服务提供者。
对于 Laravel 5.5 及更高版本,包将自动注册。
// file config/app.php
...
'providers' => [
...
\MWazovzky\Favoritable\FavoritableServiceProvider::class
...
];
...
- 运行数据库迁移以创建
favorites
表
$ php artisan migrate
- 为每个可以被用户收藏的模型使用 trait Favoritable
查看 trait 文档块以获取可用方法的列表。
use \MWazovzky\Favoritable\Favoritable;
- 通过向 'web' 路由组添加相应的路由,包使应用程序可以通过添加
favorite
/unfavorite
端点
Route::post('/favorites/{model}/{id}', 'FavoritesController@store')->name('favorites.store');
Route::delete('/favorites/{model}/{id}', 'FavoritesController@destroy')->name('favorites.destroy');
其中 model
是短模型类名(对于 KebabCase
使用 kebab-case
),id
是被收藏/取消收藏的模型的 id。
- 运行 artisan 命令以将包资源发布到
/resources/assets/js/components/favoritable/Favorite.vue
文件夹
$ php artisan vendor:publish --tag=assets
- 发布的 Vue 组件包括:
<favorite>
- 收藏/取消收藏按钮<favorite-vidget>
切换favorite
查询字符串属性。 - 注册组件
// file /resources/assets/js/app.js
Vue.component('favorite', require('./components/favoritable/Favorite.vue'));
Vue.component('favorite-vidget', require('./components/favoritable/FavoriteVidget.vue'));
组件使用
<favorite type="modelClass" :model={{ $model->favoriteAttributes() }}></favorite>
其中
modelClass
是短模型类名(对于 KebabCase
使用 kebab-case
),$model
是一个模型实例,
Model::favoriteAttributes()
是由 Favoritable
trait 提供的方法。
任何具有 id
、isFavoreted
和 favoritesCount
字段的对象(例如模型本身)都可以作为组件的 model
属性传递。
<favorite-vidget></favorite-vidget>
收藏 vidget 不需要任何参数。