我正在使用 symfony 2,我们有 2 个配置,开发版和生产版。我需要知道是否可以找出我在实体或模型中使用的是哪一个。
我正在寻找与 AppKernel.php 中找到的代码类似的内容:
$this->getEnvironment()
如果我可以加载内核来调用它,那就太好了,但我找不到方法来做到这一点。经过研究后发现 symfony 事件可能会返回内核,但我不知道如何或在哪里捕获这些事件,以便我可以对它们调用 getKernel() 。http://symfony.com/doc/current/book/internals.html http://symfony.com/doc/current/book/internals.html
例如,他们列出了这个例子:
使用 Symfony\Component\HttpKernel\Event\FilterControllerEvent;
public function onKernelController(FilterControllerEvent $event)
{
$controller = $event->getController();
// ...
// the controller can be changed to any PHP callable
$event->setController($controller);
}
我不清楚该代码块应该放在哪里。在我看来,它应该进入内核,如果我有内核,我就不会遇到这个问题。
我的问题是,有没有一种简单的方法可以让我从服务或模型确定我是否处于内核中设置的“开发”或“产品”状态。
谢谢
控制台生成的默认实体类不继承任何内容。这意味着它们无论如何都不是“ContainerAware”。
一般来说,我认为他们不应该这样。我想这取决于你在做什么,但你可以通过一些基本的依赖注入来处理这个问题
在控制器中:
$entity = new \Your\Bundle\Entity\Foo(
$this->container->get( 'kernel' )->getEnvironment()
);
然后在src/你的/Bundle/Entity/Foo.php
private $env;
public function __construct( $env=null )
{
$this->env = $env;
}
这对你有用吗?
附:您发布的事件侦听器适用于控制器 - 不适用于任意类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)