8

別のバンドルからバンドル構成を変更できるかどうか疑問に思っていました。たとえば、次の構成で FOSUserBundle を使用しているとします。

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Acme\UserBundle\Entity\User

そして今、特定の拡張機能 ( ) をロードするときにユーザー クラスを変更したいと考えていますAcmeFoobarExtension。をロードするときに構成を変更することは可能AcmeFoobarExtensionですか? 例えば:

<?php
namespace Acme\FoobarBundle\DependencyInjection;

// use statements for dependency injection

class FoobarExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $container->setConfiguration(
            'fos_user.user_class',
            'Acme\FoobarBundle\Entity\User'
        );
    }
}

このようなことは可能ですか?それとも、依存性注入の目的を無効にしますか?

編集:どうやら、このアイデア/問題に対処するSymfony 2.2のプルリクエストがあるようです。

EDIT 2: これは Symfony 2.2 で利用できるようになりました (クックブックの記事付き)。

4

2 に答える 2

10

これは現在 Symfony の公式機能であることに注意してください:

http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html

バンドルは、構成値をグローバル構成パラメーターの先頭に追加できます。これを行うには、バンドル拡張で を実装する必要がありますPrependExtensionInterface。その後prepend()、メソッドはグローバル構成値を追加できます。

ただし、値は他のバンドルや構成ファイル自体によって上書きされる可能性があることに注意してください。

于 2015-05-13T14:00:38.920 に答える
2

Symfony ユーザー メーリング リスト (ここに質問があります) で同じ質問をした後、このアイデアに対するオープンプル リクエストがあることがわかりました。

バージョン 2.2 用であり、まだ master にマージされていませんが、最後の活動は 3 日前からなので、うまくいくことを期待しましょう!

于 2012-10-16T13:52:27.243 に答える