如何为symfony 2中的所有控制器设置全局变量?

时间:2014-09-03 05:43:56

标签: symfony

我需要一个全局变量供所有控制器访问它。单独使用如何在我的所有控制器中使用symfony 2会话变量。

2 个答案:

答案 0 :(得分:8)

基本上,您需要的是DI容器参数。在Symfony 2中,控制器总是处理容器,因此您可以轻松地将此类变量提取到容器参数中。

为此,您应首先在parameters.yml

中定义参数
parameters:
    your_bundle.global_param: 'Hello world'

然后,根据您的确切需要,您可以以不同方式访问它。在从Symfony的基本控制器类继承的控制器中,您可以像这样获取参数:

<?php
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MyController extends Controller
{
    public function someAction()
    {
        $var = $this->container->getParameter('your_bundle.global_param');
        // $var equals to 'Hello world' now
    }
}

在处理会话参数包时,请查看Symfony的文档:http://symfony.com/doc/current/components/http_foundation/sessions.html

答案 1 :(得分:2)

以防万一需要在Symfony3 Framework中做同样的事情,它使用ContainerInterface而不是容器:

http://api.symfony.com/3.0/Symfony/Component/DependencyInjection/ContainerInterface.html

你只需要调用getParameter()(参见上面的@kix示例):

$var = $this->getParameter('your_bundle.global_param');

希望这有助于有人想在Symfony3中做同样的事情。