Symfony:从控制器外部读取parameter.yml

时间:2017-02-28 09:06:57

标签: php symfony

我想从parameters.yml读取一个pareameter。 解决方案是扩展Controller,但我收到了这个错误:

Error: Call to a member function getParameter() on null

我知道容器是null,但我不知道如何获取容器?

class Configuration extends Controller
{
    public function __construct()
   {
     $this->tempFolderPath = sys_get_temp_dir();
     $parameter = $this->container->getParameter('a');
   }
}

任何解决方案?有什么帮助吗?

2 个答案:

答案 0 :(得分:6)

由于Controller被注入此类,因此可以扩展$this->container->getParameter('a')调用Container的类。当你在其他班级时,你需要通过defining your class as a service注入你想要的参数。

您的服务定义如下所示:

services:
    class: App\Your\FooClass
    arguments:
        - %a%

注意% - 注入参数的特殊字符

然后你的课将如下:

class FooClass
{
    protected $a;

    public function __construct($a)
    {
        $this->a = $a;
        //you have your "a" parameter value injected into constructor
    }
}

答案 1 :(得分:1)

不是最佳做法 ,但对我来说这是唯一解决方案 :(因为在我的代码中我有一个静态方法实例化孔类。 所以解决方案就是。

public function __construct()
{
    $this->tempFolderPath = sys_get_temp_dir();
    global $kernel;
    $this->host = $kernel->getContainer()->getParameter('ws_host');
}