如何在Model类中读取Symfony2中的配置值

时间:2011-09-05 22:07:17

标签: php symfony

我在config.yml中定义了一个哈希盐,想在我的User类中得到这个,关于如何做到这一点的任何想法?我已经看到了很多关于如何在控制器类中使用它的示例,但不是在模型中?

由于

2 个答案:

答案 0 :(得分:5)

我有同样的问题。如果有来自symfony 1的类似于sfConfig::get()的东西会很好。无论如何,我认为这实际上可能是“有更好的方法来做到这一点”。如果您在实例化User类时使用setter注入(即使用setHashSalt()方法),该怎么办?如果您要从控制器实例化,则可以使用$this->container->parameters['hash_salt']

AFAIK,没有使用container对象就无法访问config.yml参数。我很好奇,看看是否有人有更轻松的方式。

答案 1 :(得分:0)

请在此处查看我的回答:

How do I read configuration settings from Symfony2 config.yml?

  • FIRST APPROACH:分离配置块,将其作为参数
  • 第二种方法:分离配置块,将配置注入服务

回答你,如果你想在Model中注入它,最好的方法是让Manager作为模型的工厂,然后经理可以将自己注入模型,因此模型可以访问它,因此,可以访问配置。

假设您的模型有CarHouse,如果它们相关,您可以CityManagergetAllCars()getCarById()或类似,以及getAllHouses()getHouseById()左右。

然后在CityManager中将配置传递给Model类:

class CityManager()
{
    private $myConfigValue;

    public getCarById( $id )
    {
        return new Car( $id, $this->myConfigValue );
    }
}

要么自己通过,要让Model只在需要时才能获得配置:

class CityManager()
{
    private $myConfigValue;

    public getCarById( $id )
    {
        return new Car( $id, $this );
    }

    public getConfig()
    {
        return $this->myConfigValue;
    }
}

按照链接的文章填写值。