Symfony-在bundle控制器中获取自定义参数



我在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']);
}

然后你可以像你一样在控制器中获得这个参数

最新更新