0

Symfonyはファクトリーサービスを自動的に削除しますか?

何が起こっているのかわかりませんが、私のバンドルはservice.xmlファイルを正しくロードしています:

<services>
    <service id="gremo_subscription_factory"
        class="%gremo_subscription_factory.class%" public="false">
        <argument>%gremo_subscription.interval%</argument>
    </service>
    <service id="gremo_subscription" class="%gremo_subscription.class%"
        factory-service="gremo_subscription_factory"
        factory-method="getSubscription">
    </service>
</services>

これは、拡張クラスによって行われます。

public function load(array $configs, ContainerBuilder $container)
{
    $processor = new Processor();
    $configuration = new Configuration();

    $config = $processor->processConfiguration($configuration, $configs);
    $loader = new XmlFileLoader($container,
        new FileLocator(__DIR__.'/../Resources/config'));

    $loader->load('services.xml');
}

サービスの定義はバンドルにgremo_subscription_factory存在します(var_dumpコンテナーはサービス定義を示します)。gremo_subscriptionただし、別のバンドルから(たとえば、コントローラーから)サービスにアクセスしようとすると、次のようになります。

$subscription = $this->get('gremo_subscription');

例外が発生します:

存在しないサービス「gremo_subscription_factory」をリクエストしました。

なぜこれが起こっているのですか?

4

1 に答える 1

1

gremo_subscription_factoryをプライベートとして設定しないでください。

public="false"サービスのフラグを削除します。

于 2012-12-14T17:40:25.843 に答える