シナリオ:Symfony2の - (例えばFOSFacebookBundleの)ベンダーバンドルを拡張する方法
私は私が私の構成で正確に一つのFacebookアプリのためのパラメータを設定することができますバンドル(FOSFacebookBundle)を使用しています。すべてが完璧に機能しますが、今は1つのアプリだけでなく、複数のアプリを設定する必要があります。
私のアプローチ:
:は、私はそうのようなアレイ内の複数のアプリケーションを定義することができますAcmeFacebookBundleを、(設定はアクメ\ FacebookBundle \依存性の注入\設定で定義)を作成しました
acme_facebook:
apps:
some_competition:
server_url: %acme.facebook.some_competition.server_url%
file: %kernel.root_dir%/../vendor/facebook/php-sdk/src/base_facebook.php
alias: facebook
app_id: %acme.facebook.some_competition.app_id%
secret: % acme .facebook.some_competition.secret%
cookie: true
permissions: [email, user_birthday, user_location]
some_other_competition:
server_url: %acme.facebook. some_other_competition.server_url%
file: %kernel.root_dir%/../vendor/facebook/php-sdk/src/base_facebook.php
alias: facebook
app_id: %acme.facebook. some_other_competition.app_id%
secret: % acme .facebook. some_other_competition.secret%
cookie: true
permissions: [email, user_birthday, user_location]
Acme \ FacebookBundle \ DependencyInjection \ AcmeFacebookExtension私はすべてのアプリケーションをループしています。この考え方は、server_urlパラメータを現在のURLと比較し、fos_facebook設定をmineで上書きすることです。
class AcmeFacebookExtension extends Extension
{
...
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
foreach ($config['apps'] as $app)
{
// check for matching path here?
foreach (array('file', 'app_id', 'secret', 'cookie', 'domain', 'logging', 'culture', 'permissions') as $attribute)
{
$container->setParameter('fos_facebook.' . $attribute, $app[$attribute]);
}
}
}
問題:
しかし、私はこだわっているところ、これは正確です。明らかに、私はこの比較を行うために、AcmeFacebookExtension内からRequestオブジェクトまたはDiCにアクセスすることはできません。 私のアプローチは完全に間違っていますか?この問題にどのように取り組むべきか、あなたはもっと良い考えを持っていますか?
異なるquestin、同じ目標:[Symfony2の負荷条件設定](http://stackoverflow.com/questions/9603384/symfony2-load-conditional-configuration) – leek
ええ、あなたのコントローラの設定を正しい方法にしているのかどうか分かりません。設定の解析が行われたときに設定を注入すると、それを行う正しい方法のように感じる... – Burgi