Я работаю с Symfony 3.4 - у меня есть UserBundle, который расширяет FOSUserBundle. Этот пакет будет использоваться в нескольких проектах, и я хочу создать конфигурацию для своего пакета. Например, чтобы включить или отключить ссылку для регистрации в форме входа.
Я только что создал конфигурацию для этого, но переменные конфигурации не вводятся в шаблоны веток. В документации Symfony говорится, что я должен определить его как глобальные параметры, но это не лучший способ, потому что я не хочу устанавливать эти параметры в каждом проекте.
Конфигурация комплекта:
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('user');
$rootNode
->children()
->booleanNode('loginform_registration_link')->isRequired()->end()
->end();
return $treeBuilder;
}
Вот код, как я загружаю конфигурацию:
public function load(array $configs, ContainerBuilder $container)
{
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('user.loginform_registration_link', $config['loginform_registration_link']);
}
Возникает вопрос: как я могу ввести параметры конфигурации в ветку, не устанавливая ее как глобальные переменные ветки, не затрагивая снова конфигурацию проекта и не отменяя каждое действие / контроллер FOSUserBundle?
Если вы действительно думаете, что вам нужно это сделать, посмотрите, как TwigBundle / DependencyInjection внедряет глобальные объекты. Но расширение ветки, вероятно, является более простым и понятным подходом.




Невозможно расширить config.yml из пакета и установить там глобальные переменные ветки? Значит, вы не делаете этого в каждом проекте? Я думаю, это правильный путь.