我需要一个全局变量来让所有的控制器访问它。单独使用symfony 2会话变量在我所有的控制器中。如何为symfony 2中的所有控制器设置全局变量?
1
A
回答
5
基本上,你需要的是一个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
以防万一有人需要做Symfony3框架同样的事情,它使用ContainerInterface而不是容器:
http://api.symfony.com/3.0/Symfony/Component/DependencyInjection/ContainerInterface.html
,你根本就只需要调用getParameter()
(请参阅上面的@kix的示例)如下所示:
$var = $this->getParameter('your_bundle.global_param');
希望这可以帮助有人想在Symfony3中做同样的事情。
相关问题
- 1. 设置Kohana中所有控制器的全局变量2.3.4
- 2. 如何设置在控制器中的全局变量
- 3. 如何为Laravel中的所有请求设置全局变量
- 4. 如何重置所有全局变量?
- 5. 为所有Docker容器设置全局环境变量
- 6. laravel控制器中的全局变量
- 7. 如何为Symfony2中的所有控制器设置会话变量?
- 8. symfony中的全局变量(如BD config)
- 9. Codeigniter:设置'全局变量'
- 10. 如何访问zend框架控制器中的全局变量
- 11. 如何为所有视图创建全局控制器?
- 12. 如何取消设置全局变量。
- 13. jQuery设置全局变量
- 14. 设置全局变量Codeigniter
- 15. 如何获得所有全局变量
- 16. 全局变量v C#中的设置
- 17. 与全局变量设置
- 18. 从表单行为到控制器中的全局变量
- 19. 如何在控制器中全局声明这些变量?
- 20. 将Firebase user.uid设置为全局变量
- 21. Javascript全局变量设置为新值
- 22. Symfony 1.4和全局变量
- 23. 设置全局变量并在Grails控制器中访问它们
- 24. C#全局变量为所有形式
- 25. 从promise中设置类的全局变量Angular 2
- 26. 为所有控制器设置布局操作 - CakePHP
- 27. 如何设置控制器的布局
- 28. 如何定义用于REST控制器的Wordpress全局变量?
- 29. Symfony 2 - 安全Ajax控制器
- 30. 在jQuery中设置全局变量
感谢kix有用的信息。 – 2014-09-03 11:02:06