定制 anh/doctrine-extensions-taggable 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

anh/doctrine-extensions-taggable

Composer 安装命令:

composer require anh/doctrine-extensions-taggable

包简介

Doctrine2 taggable behavior extension

README 文档

README

Build Status SensioLabsInsight

Installation

    "require": {
        "anh/doctrine-extensions-taggable": "~1.0"
    }

Symfony

There is bundle for that — AnhTaggableBundle

Basic integration

edit app/config/config.yml:

doctrine:
    dbal:
# ...

    orm:
# ...
        mappings:
            taggable:
                type: annotation
                alias: AnhTaggable
                prefix: Anh\Taggable\Entity
                dir: "%kernel.root_dir%/../vendor/anh/doctrine-extensions-taggable/lib/Anh/Taggable/Entity"

edit Acme/DemoBundle/Resources/config/services.yml to add a service and event subscriber

# ...
services:
# ...
    anh_taggable.manager:
        class: Anh\Taggable\TaggableManager
        arguments:
            - @doctrine.orm.entity_manager
            - Anh\Taggable\Entity\Tag
            - Anh\Taggable\Entity\Tagging

    anh_taggable.subscriber:
        class: Anh\TaggableBundle\TaggableSubscriber
        arguments:
            - @service_container
        tags:
            - { name: doctrine.event_subscriber }

Example

Create taggable entity

<?php

use Anh\Taggable\TaggableInterface;
use Anh\Taggable\AbstractTaggable;

class Article extends AbstractTaggable implements TaggableInterface
{
    // ...

    public function getTaggableType()
    {
        return 'article';
    }
}

Using taggable extension

<?php

use Anh\Taggable\TaggableManager;
use Anh\Taggable\TaggableSubscriber;

// create entity manager
// $em = EntityManager::create(...);

// create taggable manager
$taggableManager = new TaggableManager(
    $em, 'Anh\Taggable\Entity\Tag', 'Anh\Taggable\Entity\Tagging'
);

// add event subscriber
$em->getEventManager()->addEventSubscriber(
    new TaggableSubscriber($taggableManager)
);

// create and fill entity
$article = new Article();
// $article->setTitle(...);

// add tag
$tag = $taggableManager->loadOrCreateTag('This is a tag');
$article->addTag($tag);

// or add multiple tags
$tags = $taggableManager->loadOrCreateTags(array('tag1', 'tag2', 'tag3'));
$article->addTags($tags);

// see Anh\Taggable\AbstractTaggable for more

$em->persist($article);
$em->flush();

// ...

// getting tagged resources
$repository = $taggableManager->getTaggingRepository();

$tag = $taggableManager->loadOrCreateTag('Some tag')
// returns all resources tagged with tag 'Some tag'
$resources = $repository->getResourcesWithTag($tag);
// returns only articles with tag 'Some tag'
$articles = $repository->getResourcesWithTypeAndTag('article', $tag);

统计信息

  • 总下载量: 21.03k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 2
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2013-10-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固