atelierdisko / li3_taggable
Lithium 行为,允许您为模型添加标签支持。
Requires
- php: >=5.5.0
- composer/installers: 1.*
- unionofrad/li3_behaviors: ^2.1
- unionofrad/lithium: ^1.1
This package is auto-updated.
Last update: 2020-11-22 20:43:31 UTC
README
li3_taggable
库旨在使将标签功能添加到您的模型变得非常简单。
安装
首选的安装方法是使用 composer。您可以通过以下方式添加库作为依赖项
composer require atelierdisko/li3_taggable
li₃ 插件必须在您的应用程序引导阶段注册,因为它们使用不同的(更快)自动加载器。
Libraries::add('li3_taggable')
官方手册提供了有关如何在应用程序中注册插件或使用替代安装方法(例如通过 GIT)的更多信息。
特性
- 自动标签化
- 命名空间标签(如
'look:summer'
) - 标签过滤器以规范化标签
- 增强查找器,即使在数据源不原生支持列表时也能搜索标签列表
- 可选的标签模型,以在中央位置存储标签
- 去规范化存储
使用方法
要启用,请将 Taggable
添加到使用 li3_behaviors\data\model\Behaviors
的模型的 $_actsAs
数组中
class Posts extends \lithium\data\Model {
use li3_behaviors\data\model\Behaviors;
protected static $_actsAs = [
'Taggable' => [
'field' => 'tags',
'filters' => ['strtolower']
]
];
}
对标签化记录的高级过滤
不支持数组的数据源查找器允许在序列化字段上使用查询操作符,就像它是数组一样。
当值是字符串数组时,默认使用 'HAS ANY'
操作符。当值是数组且未给出操作符时,它隐含。它选择包含所提供字符串之一的行
Posts::find('all', ['conditions' => [ 'tags' => ['foo', 'bar'] ]]);
... 这等于
Posts::find('all', ['conditions' => [ 'tags' => ['HAS ANY' => ['foo', 'bar']] ]]);
使用 'HAS ALL'
操作符选择具有 所有 给定标签的记录
Posts::find('all', ['conditions' => [ 'tags' => ['HAS ALL' => ['foo', 'bar']] ]]);
当值是单个字符串时,默认使用 'HAS'
操作符。当值是字符串且未给出操作符时,它隐含。它选择包含所提供字符串的行
Posts::find('all', ['conditions' => [ 'tags' => 'foo' ]]);
... 这等于
Posts::find('all', ['conditions' => [ 'tags' => ['HAS' => 'foo'] ]]);
大多数操作符都可以取反
Posts::find('all', ['conditions' => [ 'tags' => ['NOT HAS' => 'foo'] ]]); Posts::find('all', ['conditions' => [ 'tags' => ['NOT HAS ANY' => ['foo', 'bar']] ]]);
如果应该使用原生的 'REGEXP'
操作符,则跳过重新格式化,直接传递查询条件
Posts::find('all', ['conditions' => [ 'tags' => ['REGEXP' => '^foo'] ]]);
更多信息
有关公开的方法和配置选项的更多信息,请参阅 li3_taggable\extensions\data\behavior\Taggable
的 API 文档。
版权 & 许可
版权 2012 Affinitive LLC。保留所有权利。版权 2013 Marius Wilms。保留所有权利。版权 2016 Atelier Disko。保留所有权利。
此库根据 BSD 3-Clause 许可证分发。完整的许可证文本可以在 LICENSE.txt 文件中找到。