我需要一个全局变量供所有控制器访问它。单独使用如何在我的所有控制器中使用symfony 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中做同样的事情。