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

Joh*_*ohn 1 symfony

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

kix*_*kix 8

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

为此,您应首先在以下内容中定义参数parameters.yml:

parameters:
    your_bundle.global_param: 'Hello world'
Run Code Online (Sandbox Code Playgroud)

然后,根据您的确切需要,您可以以不同方式访问它.在从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
    }
}
Run Code Online (Sandbox Code Playgroud)

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