我在Symfony 3.4.12下运行一个网站,并创建了自己的自定义捆绑包。我在Yaml:中有一个自定义配置文件
# src/CompanyBundle//Resources/config/config.yml
company_bundle:
phone_number
它是这样启动的:
<?php
# src/CompanyBundle/DependencyInjection/CompanyExtension.php
namespace CompanyBundleDependencyInjection;
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentConfigFileLocator;
use SymfonyComponentHttpKernelDependencyInjectionExtension;
use SymfonyComponentDependencyInjectionLoader;
class CompanyExtension extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new LoaderYamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('config.yml');
}
}
?>
我想在我的控制器文件中检索我的自定义参数,最好的方法是什么?我尝试过这种方式,但没有成功:
$this->getParameter('company_bundle.phone_number')
谢谢。
您必须定义自己的DependencyInjection/Configuration.php
:http://symfony.com/doc/3.4/bundles/configuration.html#processing-配置阵列
比如:
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('company_bundle');
$rootNode
->children()
->scalarNode('phone_number')
->end()
->end()
;
}
然后将其处理到您的DependencyInjection/...Extension.php
文件中。如果你想让这个选项作为参数,你必须这样做:
public function load(array $configs, ContainerBuilder $container)
{
// Some default code
$container->setParameter('company_bundle.phone_number', $config['phone_number']);
}
然后你可以像你一样在控制器中获得这个参数