thyseus / yii2-favorites
为Yii2提供通用收藏管理
v0.1.0
2017-02-15 09:54 UTC
Requires
- yiisoft/yii2: ^2.0.0
- yiisoft/yii2-bootstrap: ^2.0.0
This package is auto-updated.
Last update: 2024-08-29 01:40:51 UTC
README
Yii 2框架的通用收藏管理器。每个ActiveRecord模型都可以被收藏并允许授权用户稍后访问。只包含一个名为'favorites'的表,用于存储所有内容。
安装
$ composer require thyseus/yii2-favorites
$ php yii migrate/up --migrationPath=@vendor/thyseus/yii2-favorites/migrations
配置
将以下行添加到您的配置文件中
'modules' => [
'favorites' => [
'class' => 'thyseus\favorites\Module',
],
],
集成到您的应用程序中
使用
use thyseus\favorites\models\Favorite;
$model = CurrentModel::findOne(57);
echo $this->render('@vendor/thyseus/yii2-favorites/views/favorites/_button', [
'model' => CurrentModel::className(),
'target' => $model->slug
]);
在视图文件中显示“设置为收藏”/“移除收藏”切换按钮,以便用户可以向模型添加收藏。
注意,如果您在应用程序配置中设置别名,则可以缩短调用
'aliases' => [
'@favorites' => '@app/vendor/thyseus/yii2-favorites'
],
并且可以像这样调用视图
echo $this->render('@favorites/views/favorites/_button', [
如果模型不是默认通过'ID'列来标识,例如如果您使用别名,您可以在模型内部定义标识符属性如下
public function identifierAttribute()
{
return 'slug';
}
如果yii2-favorites自动创建URL失败,您可以手动附加URL
use thyseus\favorites\models\Favorite;
$model = CurrentModel::findOne(57);
echo $this->render('@vendor/thyseus/yii2-favorites/views/favorites/_button', [
'model' => CurrentModel::className(),
'target' => $model->id,
'icon' => '<i class="fa fa-users" aria-hidden="true"></i>', // optional
'url' => Url::to(['fancy-url', 'id' => 1337]) ,
]);
使用第四个参数设置自定义的目标属性
use thyseus\favorites\models\Favorite;
$model = CurrentModel::findOne(57);
echo $this->render('@vendor/thyseus/yii2-favorites/views/favorites/_button', [
'model' => CurrentModel::className(),
'target' => $model->id,
'target_attribute' => 'i-am-referenced-by-this-column',
]);
如果您想使用复合标签标识符,可以这样做
public function getName()
{
return $this->firstname . ' ' . $this->lastname;
}
您可以使用此代码示例在NavBar中创建包含收藏的动态菜单
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'encodeLabels' => false,
'items' => [
['label' => '<span class="glyphicon glyphicon-bookmark"></span>', 'options' => ['class' => 'favorites-menu clickable', 'style' => 'cursor: pointer;'], 'url' => false, 'visible' => !$user->isGuest, 'items' => ['' => '']],
]
]);
$this->registerJs("
$('.favorites-menu').click(function() {
$.getJSON('".Url::to(['//favorites/favorites/json'])."', function (data) {
dd = $('.favorites-menu').find('.dropdown-menu');
dd.html('');
dd.append('<li><a href=\"".Url::to(['//favorites/favorites/index'])."\">Manage favorites</a></li>');
data.forEach(function(elem) {
dd.append('<li>' + (elem.icon ? elem.icon : '') + ' <a href=\"' + elem.url + '\">' + elem.title.substring(0, 60) + '</a></li>');
});
});
});
");
.favorites-menu li a { display: inline; padding: 0; }
.favorites-menu .dropdown-menu { padding: 10px; }
路由
您可以使用以下路由来访问收藏模块
- 列出当前登录用户的全部收藏:https://your-domain/favorites/favorites/index
- 查看:https://your-domain/favorites/favorites/view?id=
- 更新:'favorites/update/'
- 删除:'favorites/delete/'
- 查看:'favorites/'
许可证
Yii2-favorites遵循GPLv3许可证发布。