dantleech / phpcr-taxonomy-bundle
PHPCR-ODM 的分类包
dev-master / 1.0.x-dev
2015-01-25 08:59 UTC
Requires
- php: >=5.3.3
- doctrine/phpcr-bundle: ~1.0
- doctrine/phpcr-odm: ~1.0
- jms/metadata: ~1.5
- symfony/framework-bundle: ~2.2
Requires (Dev)
- symfony-cmf/routing-bundle: ~1.1
- symfony-cmf/testing: ~1.1
- symfony/monolog-bundle: ~2.2
This package is auto-updated.
Last update: 2024-08-29 04:04:02 UTC
README
功能
- 在指定的路径自动创建标签对象
- 路径有效作为分类
- 自动将标签对象与目标文档关联
- 分类引用计数,因为 PHPCR-ODM 不做聚合。(例如标签云)
- 用于“修复”或初始化分类引用计数的命令
计划
- 孤儿删除
- 静态分类 - 即指定是否可以创建新的分类。
- 分层标签,例如指定“笔记本电脑 > 联想 > X200”作为标签,创建3级层次结构。
这是一个非常具体的 PHPCR 分类包。
基本用法
对于每个需要标记的文档,您需要添加两个属性注解,@Taxons
和 @TaxonObjects
。第一个将自动映射到数组,第二个将包含实际的分类对象集合。
namespace DTL\PhpcrTaxonomyBundle\Tests\Resources\Document; use Doctrine\ODM\PHPCR\Mapping\Annotations as PHPCR; use DTL\PhpcrTaxonomyBundle\Metadata\Annotations as PhpcrTaxonomy; /** * @PHPCR\Document(referenceable=true) */ class Post { /** * @PHPCR\Id() */ public $id; /** * @PHPCR\ParentDocument() */ public $parent; /** * @PhpcrTaxonomy\Taxons(path="/test/taxons") */ public $tags; /** * @PhpcrTaxonomy\TaxonObjects() */ public $tagObjects; }
标签可以设置如下
$post = new Post(); $post->tags = array('one', 'two');
每个分类的父文档由 Taxons
注解的 path
属性确定。在持久化文档之前必须存在。
备选分类类
您可以通过以下方式指定备选分类类
namespace DTL\PhpcrTaxonomyBundle\Tests\Resources\Document; use Doctrine\ODM\PHPCR\Mapping\Annotations as PHPCR; use DTL\PhpcrTaxonomyBundle\Metadata\Annotations as PhpcrTaxonomy; /** * @PHPCR\Document(referenceable=true) */ class Post { // ... /** * @PhpcrTaxonomy\Taxons(path="/test/taxons", taxonClass="MyBundle\MyTaxonClass") */ public $tags; }
分类引用计数
Doctrine 订阅者自动记录每个分类文档的引用者数量。例如,如果一个分类被5篇帖子使用,则该分类有5个引用者。
如果您想显示一个标签云,并按引用次数对分类进行加权,这特别有用。
请注意,如果您实现自定义分类文档,您必须实现 getReferrerCount
和 setReferrerCount
,并将字段存储为 Long
。
每当一个分类与文档关联或取消关联时,每个分类的分类引用计数都会更新。如果由于某种原因此数据损坏,您可以运行以下命令来重新初始化此数据
$ php app/console phpcr-taxonomy:update-referrer-count