3

Sonata Media Bundle をインストールしていますが、バンドルのギャラリー部分は使用していません。

ギャラリーを無効にするにはどうすればよいですか?

私は Symfony 2.3 を使用しており、ドキュメントに従って標準のメディア バンドルをインストールしています。

これまでの解決策:

管理バンドルからこの問題https://github.com/sonata-project/SonataAdminBundle/issues/460show_in_dashboard: falseを見ると、yaml ファイルにタグを追加することで管理者を無効にすることができます。

これを行うには、このフラグを追加する独自のコンパイラを追加するだけです。

  1. コンパイラを作成します: http://symfony.com/doc/current/components/dependency_injection/tags.html

  2. コンパイラをバンドルに追加します: http://symfony.com/doc/2.3/cookbook/service_container/compiler_passes.html

これで完了です。より良い解決策があれば、それについて聞きたいです。

コンパイラの例:

namespace YourBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class OverrideMediaGalleryCompilerPass implements CompilerPassInterface
{

    /**
     * You can modify the container here before it is dumped to PHP code.
     *
     * @param ContainerBuilder $container
     *
     * @api
     */
    public function process( ContainerBuilder $container )
    {
        $definition = $container->getDefinition( 'sonata.media.admin.gallery' );
        if ( $definition ) {
            /**
             * The purpose here is to disable the sonata admin gallery from showing up
             * in the dashboard. This goes through and adds show_in_dashboard parameter
             * that disables this.
             */
            if ( $definition->hasTag( 'sonata.admin' ) ) {
                $tags                             = $definition->getTag( 'sonata.admin' );
                $tags[ 0 ][ 'show_in_dashboard' ] = false;
                $definition->clearTag( 'sonata.admin' );
                $definition->addTag( 'sonata.admin', $tags[ 0 ] );
            }
        }
    }
}
4

4 に答える 4

4

以下のサービス構成をconfig.ymlまたはsonata_admin.ymlファイルに追加して、管理パネルからギャラリーとメディア メニューを無効にするか、 configservices.ymlディレクトリのファイルを使用して、 dependencyInjectionクラスからロードします。

#Application/Sonata/MediaBundle/DependencyInjection/ApplicationSonataMediaExtension.php
<?php

namespace Application\Sonata\MediaBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
 * This is the class that loads and manages your bundle configuration
 *
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
 */
class ApplicationSonataMediaExtension extends Extension
{
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}

sonata.media.admin.gallery:ギャラリーメニューのみを削除したい場合は、専用サービスを使用してください

#Application/Sonata/MediaBundle/Resources/config/services.yml
#Disable gallery & media menu from admin panel
services:
    sonata.media.admin.media:
        class: %sonata.media.admin.media.class%
        tags:
            - { name: sonata.admin, manager_type: orm, show_in_dashboard: false, label_catalogue: %sonata.media.admin.media.translation_domain% , label_translator_strategy: sonata.admin.label.strategy.underscore }
        arguments:
            - ~
            - %sonata.media.admin.media.entity%
            - %sonata.media.admin.media.controller%
            - "@sonata.media.pool"
        calls:
            - [setModelManager, ["@sonata.media.admin.media.manager"]]
            - [setTranslationDomain, [%sonata.media.admin.media.translation_domain%]]
            - [setTemplates, [{ inner_list_row: SonataMediaBundle:MediaAdmin:inner_row_media.html.twig , base_list_field: SonataAdminBundle:CRUD:base_list_flat_field.html.twig , list: SonataMediaBundle:MediaAdmin:list.html.twig , edit: SonataMediaBundle:MediaAdmin:edit.html.twig }]]

    sonata.media.admin.gallery:
        class: %sonata.media.admin.gallery.class%
        tags:
            - { name: sonata.admin, manager_type: orm, show_in_dashboard: false, label_catalogue: %sonata.media.admin.media.translation_domain% , label_translator_strategy: sonata.admin.label.strategy.underscore }
        arguments:
            - ~
            - %sonata.media.admin.gallery.entity%
            - %sonata.media.admin.gallery.controller%
            - "@sonata.media.pool"
        calls:
            - [setTranslationDomain, [%sonata.media.admin.media.translation_domain%]]
            - [setTemplates, [{ list: SonataMediaBundle:GalleryAdmin:list.html.twig }]]

次に、キャッシュをクリアして変更を反映します

php app/console cache:clear
于 2015-03-05T10:25:03.657 に答える
0

app\config\sonata\sonata_admin.yml ファイルの最後のコメントを編集するか、sonata.media.admin.gallery を含む行を削除しないのはなぜですか?

于 2014-09-19T10:09:26.300 に答える