symfony2 - 如何扩展供应商捆绑包(例如fosfacebookbundle)
-
12-12-2019 - |
题
方案:
我正在使用捆绑(fosfacebookbundle),允许我在我的配置中为完全一个Facebook应用程序设置参数。一切都很精细,但现在我不需要设置一个应用程序,而是需要多个应用程序。
我的方法:
我创建了一个acmefacebookbundle,它允许定义多个应用程序(在数组中允许定义的多个应用程序(在 acme \ facebookbundle \ dependency incence incence incence )中如下: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 \ incenceenceInjection \ acmefacebookextension 然后我正在循环通过所有应用程序。该想法是将Server_URL参数与当前URL进行比较,并使用MINE覆盖FOS_Facebook配置。
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内访问请求对象或DIC来执行此比较。 我的方法我完全错了吗?你有什么更好的想法如何解决这个问题?
解决方案
要创建的内容是一个生成的icetagcode,以便在所有其他配置加载后,可以操作生成的icICetagcode。这些应该让你开始:
不隶属于 StackOverflow