fogs/tagging-bundle

在您的Symfony2项目中标记任何实体。

此包的规范存储库似乎已消失,因此包已被冻结。

dev-master 2018-02-10 21:44 UTC

This package is auto-updated.

Last update: 2024-07-26 18:03:28 UTC


README

在您的Symfony2项目中标记任何实体。此扩展包负责前端(使用 max-favilli/tagmanager 的 jQuery 插件)和后端(使用 FabienPennequin/FPNTagBundle,这是一个围绕 Doctrine 扩展的方便包装)。

导航

  1. 安装
  2. 使实体可标记
  3. 使用标签

安装

使用 Composer

您可以使用 composer 添加此扩展包

$ php composer.phar require max-favilli/tagmanager:dev-master
$ php composer.phar require fogs/tagging-bundle:@dev

或者您可以直接编辑 composer.json 文件,在其中需要添加以下内容

"require": {
    "max-favilli/tagmanager": "dev-master",
    "fogs/tagging-bundle":"@dev"
}

设置扩展包

要开始使用扩展包,请在您的 Kernel 中注册它。此文件通常位于 app/AppKernel

public function registerBundles()
{
    $bundles = array(
        // ...
        new FPN\TagBundle\FPNTagBundle(),
        new Fogs\TaggingBundle\FogsTaggingBundle(),
    );
)

(您知道如何删除 FPNTagBundle() 的那一行吗?请告诉我。或者更好的是:分叉并修复。谢谢。)

通过在您的配置中添加一个导入语句来激活扩展包的配置。此文件通常位于 app/config/config.yml

imports:
	# ...
    - { resource: "@FogsTaggingBundle/Resources/config/config.yml" }

为此扩展包添加路由。如果计划使用自动完成,则需要这样做。此文件通常位于 app/config/routing.yml

fogs_tag:
    resource: "@FogsTaggingBundle/Controller"
    type:     annotation
    prefix:   /

转储所有新安装的资产并更新数据库模式

$ app/console assetic:dump
$ app/console doctrine:schema:update --force

确保加载扩展包的 CSS 和 JS 文件。您很可能想在 app/Resources/views/base.html.twig 中这样做。

	<link rel="stylesheet" type="text/css" href="{{ asset('css/tagging.css') }}" />

由于 JS 代码依赖于 JQuery,因此 <script> 标签必须在 JQuery 加载之后。

	<script src="{{ asset('js/tagging-bundle.js') }}"></script>

设置实体

在此示例中,我们使用实体 Profile - 您的实体名称可能不同。

use Fogs\TaggingBundle\Interfaces\Taggable;
use Fogs\TaggingBundle\Traits\TaggableTrait;
 
/**
 * Profile
 */
class Profile implements Taggable
{
	use TaggableTrait;
	
	// ...
}

特性需要 PHP >5.4 - 如果无法升级,也可以将 TaggableTrait 类的内容复制并粘贴到实体中,而不是使用 use TaggableTrait;。然而,每次这样做时,小海豹都会死去,所以请考虑再次升级。

之后,向实体表单构建器中添加一个新的输入

class ProfileType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // ..
            ->add('tags', 'tags')
        ;
    }

现在您应该能够编辑实体并使用标签。

要访问分配的标签,请使用实体的 tags 属性。在 twig 中可以这样做

	<ul>
	{% for key, value in profile.tags %}
	  <li>{{ value }}</li>
	{% endfor %} 
	</ul>