Symfony2でパラメータを動的に設定するにはどうすればよいですか?

ゴットリーブ・ノッチナベル

Symfony2でパラメーターを動的に設定しようとしています(parameters.ymlファイルに静的に設定することはできません)。私のアプローチはEventListenerを使用することです

namespace Acme\AcmeBundle\EventListener;

use Symfony\Component\DependencyInjection\Container;

class AcmeListener
{
    private $container;

    public function __construct(Container $container)
    {
        $this->container = $container;
    }

    public function onKernelRequest()
    {
        // Dynamically fetch $bar
        $bar = fetch('foobar');

        // Set parameter
        $this->container->setParameter('foo', $bar);
    }
}

そして、私のサービス定義はconfig.yml次のようになります。

service:
    kernel.listener.acme_listener:
        class: Acme\AcmeBundle\EventListener\AcmeListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
        arguments: [ '@service_container' ]

問題は、例外が発生することです。

LogicException:フリーズしたParameterBagでset()を呼び出すことができません。

この例外を回避するにはどうすればよいですか、またはパラメータを動的に設定する別の方法がありますか?

マリノディクレメンテ

コンテナパラメータのルールは次のとおりです。

コンテナをコンパイルする前にのみパラメータを設定できます

問題を解決する方法は、コンテナに動的パラメータがあるとは考えられていないという前提で、ニーズによって異なります。

  1. カスタムの動的な「オプション」サービスを作成し、それを他のサービスに挿入します。この方法で、データベース内のパラメーターを管理することもできます(wordpress wp_optionsなど)が、これを行うバンドルはわかりません。既存のサービス(メーラーなど)の場合は、コンフィギュレーターを使用できます

  2. ここでパラメータが変更されたときにキャッシュを無効にする簡単な方法なので、ページをリロードするとコンテナが再構築されます。パラメータが頻繁に変更されると、キャッシュが頻繁にリロードされるリスクがあり、負荷が大きい場合に問題になります。

2番目のオプションを選択した場合は、コンテナに入力する前にパラメータを設定する必要があるため、次のことができます。

  • キャッシュをクリアする前にパラメーターが変更されたときにapp / config / config.ymlにロードされたカスタムyamlファイルにエクスポートします。これにより、他のサービスからデータを取得できます。
  • ここでクックブックのバンドル拡張機能にパラメーターをロードします。この方法では、他のサービスにアクセスしてデータを取得することはできません。拡張機能はコンテナービルダーにのみアクセスできます。

ただし、オプション1(オプションサービスとコンフィギュレーター)をお勧めします。これは、コンテナーが動的パラメーターを持っているとは考えられていないためですが、任意のソースからのデータを使用するカスタム動的サービスコンフィギュレーターを使用できるためです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AngularJS:$ httpのパラメーターを動的に設定するにはどうすればよいですか?

分類Dev

WordDelimiterTokenFilterでカスタムパラメータを設定するにはどうすればよいですか

分類Dev

tkinterのOptionMenuにパラメーターを設定するにはどうすればよいですか?

分類Dev

Symfony 2の任意のクラスから設定パラメーターにアクセスするにはどうすればよいですか?

分類Dev

一括挿入パラメータに値を設定するにはどうすればよいですか?

分類Dev

Springでクエリパラメータを追加/設定するにはどうすればよいですか?

分類Dev

AsyncTaskでdoInBackgroundのパラメータを設定するにはどうすればよいですか?

分類Dev

PHPでパラメータを設定するにはどうすればよいですか?

分類Dev

Symfony2設定で値を持つ配列を追加するにはどうすればよいですか?

分類Dev

symfony2で作成日と更新日を設定するにはどうすればよいですか?

分類Dev

パラメータを動的に設定するときのパスの問題を解決するにはどうすればよいですか?

分類Dev

@Inputのパラメーターに基づいて:host要素を動的にスタイル設定するにはどうすればよいですか?

分類Dev

Javascriptからパラメータ値を使用してSymfony2 twig URLを生成するにはどうすればよいですか?

分類Dev

Symfony2のすべてのコントローラーにセッション変数を設定するにはどうすればよいですか?

分類Dev

Djangoでrequest.GETにクエリパラメータを動的に設定するにはどうすればよいですか?

分類Dev

Symfony2ルーティングで、オプションのサブドメインを設定するにはどうすればよいですか?

分類Dev

Symfony2コマンドで終了ステータスコードを設定するにはどうすればよいですか?

分類Dev

jsonファイルから動的にansibleロールのパラメーターを設定するにはどうすればよいですか?

分類Dev

iron-routerを使用してクエリ文字列またはパラメータを動的に設定するにはどうすればよいですか?

分類Dev

Symfony2の検証制約にパラメーターを渡すにはどうすればよいですか-ymlで

分類Dev

SQLで一定期間のデータを表示するようにパラメーターを設定するにはどうすればよいですか?

分類Dev

SQLで一定期間のデータを表示するようにパラメーターを設定するにはどうすればよいですか?

分類Dev

パラメータ/設定をScalaマクロに渡すにはどうすればよいですか?

分類Dev

2つのパラメータの間に「-」を区切ってsymfonyルートを定義するにはどうすればよいですか?

分類Dev

SSIS 2012でSSISプロジェクトパラメータの設定を自動化するにはどうすればよいですか?

分類Dev

ケラスのパラメーターをトレーニングできないように設定するにはどうすればよいですか?

分類Dev

java.util.function.Functionラムダに2つのパラメーターを設定するにはどうすればよいですか?

分類Dev

Angular 2-Typescriptでオプションのクラスパラメーターを設定するにはどうすればよいですか?

分類Dev

py.testの動的なデフォルトパラメータを設定するにはどうすればよいですか?

Related 関連記事

  1. 1

    AngularJS:$ httpのパラメーターを動的に設定するにはどうすればよいですか?

  2. 2

    WordDelimiterTokenFilterでカスタムパラメータを設定するにはどうすればよいですか

  3. 3

    tkinterのOptionMenuにパラメーターを設定するにはどうすればよいですか?

  4. 4

    Symfony 2の任意のクラスから設定パラメーターにアクセスするにはどうすればよいですか?

  5. 5

    一括挿入パラメータに値を設定するにはどうすればよいですか?

  6. 6

    Springでクエリパラメータを追加/設定するにはどうすればよいですか?

  7. 7

    AsyncTaskでdoInBackgroundのパラメータを設定するにはどうすればよいですか?

  8. 8

    PHPでパラメータを設定するにはどうすればよいですか?

  9. 9

    Symfony2設定で値を持つ配列を追加するにはどうすればよいですか?

  10. 10

    symfony2で作成日と更新日を設定するにはどうすればよいですか?

  11. 11

    パラメータを動的に設定するときのパスの問題を解決するにはどうすればよいですか?

  12. 12

    @Inputのパラメーターに基づいて:host要素を動的にスタイル設定するにはどうすればよいですか?

  13. 13

    Javascriptからパラメータ値を使用してSymfony2 twig URLを生成するにはどうすればよいですか?

  14. 14

    Symfony2のすべてのコントローラーにセッション変数を設定するにはどうすればよいですか?

  15. 15

    Djangoでrequest.GETにクエリパラメータを動的に設定するにはどうすればよいですか?

  16. 16

    Symfony2ルーティングで、オプションのサブドメインを設定するにはどうすればよいですか?

  17. 17

    Symfony2コマンドで終了ステータスコードを設定するにはどうすればよいですか?

  18. 18

    jsonファイルから動的にansibleロールのパラメーターを設定するにはどうすればよいですか?

  19. 19

    iron-routerを使用してクエリ文字列またはパラメータを動的に設定するにはどうすればよいですか?

  20. 20

    Symfony2の検証制約にパラメーターを渡すにはどうすればよいですか-ymlで

  21. 21

    SQLで一定期間のデータを表示するようにパラメーターを設定するにはどうすればよいですか?

  22. 22

    SQLで一定期間のデータを表示するようにパラメーターを設定するにはどうすればよいですか?

  23. 23

    パラメータ/設定をScalaマクロに渡すにはどうすればよいですか?

  24. 24

    2つのパラメータの間に「-」を区切ってsymfonyルートを定義するにはどうすればよいですか?

  25. 25

    SSIS 2012でSSISプロジェクトパラメータの設定を自動化するにはどうすればよいですか?

  26. 26

    ケラスのパラメーターをトレーニングできないように設定するにはどうすればよいですか?

  27. 27

    java.util.function.Functionラムダに2つのパラメーターを設定するにはどうすればよいですか?

  28. 28

    Angular 2-Typescriptでオプションのクラスパラメーターを設定するにはどうすればよいですか?

  29. 29

    py.testの動的なデフォルトパラメータを設定するにはどうすればよいですか?

ホットタグ

アーカイブ