dantleech/phpcr-taxonomy-bundle

PHPCR-ODM 的分类包

安装: 40

依赖项: 0

建议者: 0

安全: 0

星星: 6

关注者: 5

分支: 1

开放问题: 0

类型:symfony-bundle

dev-master / 1.0.x-dev 2015-01-25 08:59 UTC

This package is auto-updated.

Last update: 2024-08-29 04:04:02 UTC


README

Build Status Latest Stable Version Total Downloads

功能

  • 在指定的路径自动创建标签对象
    • 路径有效作为分类
  • 自动将标签对象与目标文档关联
  • 分类引用计数,因为 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个引用者。

如果您想显示一个标签云,并按引用次数对分类进行加权,这特别有用。

请注意,如果您实现自定义分类文档,您必须实现 getReferrerCountsetReferrerCount,并将字段存储为 Long

每当一个分类与文档关联或取消关联时,每个分类的分类引用计数都会更新。如果由于某种原因此数据损坏,您可以运行以下命令来重新初始化此数据

$ php app/console phpcr-taxonomy:update-referrer-count