2012-07-25 33 views
3

我有一个名为Web \ CoworkerBundle的软件包。在DIC /的configuration.php我:Symfony 2配置参数 - 参数必须定义

$rootNode = $treeBuilder->root('web_coworker'); 
$rootNode 
    ->children() 
     ->scalarNode('redirect_url')->defaultNull()->end() 
    ->end(); 

在config.yml我:

web_coworker: 
    redirect_url: "http://www.example.com/" 
我DefaultController.php

现在,我做

return array(
    'url' => $this->container->getParameter('redirect_url') 
); 

我得到的错误

必须定义参数“redirect_url”。

我想念什么吗?

+0

你可以在' - > scalarstackoNde('redirect_url') - > defaultNull() - > end()'中输入错误吗? – 2012-07-25 12:24:02

+0

对不起,这是一个复制粘贴错误:)修正了它。 – GergelyPolonkai 2012-07-25 12:38:23

回答

14

您需要创建一个组合中的一个扩展(的Acme/DemoBundle/DependencyInjection

class AcmeDemoBundleExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     $configuration = new Configuration(); 
     $config = $this->processConfiguration($configuration, $configs); 

     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); 
     $loader->load('services.yml'); 
     // MOST IMPORTANT LINE 
     $container->setParameter('web_coworker.params', $config); 
    } 
} 

现在就可以删除你的回来时,这应该做的伎俩控制器:)

+4

“食谱”中的示例中没有“最重要的行”!您可能还需要将数组的第一级变平,并查看FOS User Bundle如何执行此操作。 – 2013-08-03 23:20:02