繁体   English   中英

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

[英]How to set global variable for all controllers in symfony 2?

我需要所有控制器都可以访问的全局变量,以及如何在所有控制器中使用symfony 2会话变量。

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

为此,您应该首先在parameters.yml中定义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

万一有人需要在Symfony3 Framework中做同样的事情,它会使用ContainerInterface而不是container:

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

并且您只需要像下面这样调用getParameter() (请参见上面的@kix的示例):

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

希望这可以帮助想要在Symfony3中执行相同操作的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM