从实体中获取config.yml值

时间:2013-07-16 10:02:41

标签: php symfony

我想从symfony2实体中获取config.yml中的值。

config.yml:

my_example_bundle:
    slug_pattern: "/^[a-z0-9\._\-]{2,20}$/"

实体:

function setUsername($username) {
    $pattern = ""; // need to get it from slug_pattern in config.yml

    if (!preg_match($pattern, $username)) {
        throw new \InvalidArgumentException("Username has to match " . $pattern);
    }
    ...
}

谢谢!

更新: Dev4TheWeb也发布了一个不错的解决方案:http://dev4theweb.blogspot.ch/2012/08/how-to-access-configuration-values.html

1 个答案:

答案 0 :(得分:1)

教条实体的问题是从数据库中检索它们。它们在没有经过构造函数的情况下由doctrine实现,因此可能与您发出new语句时的依赖关系不同。

因此,让模型意识到这一点可能是一个坏主意。 您可能更喜欢使用外部服务,而更喜欢贫血模型(简单数据对象)。 然后,您将所有逻辑委托给专用服务。

如果你不想,你仍然可以手动注入你的依赖(例如在构造函数中)。这只适用于手工制作实体的情况。

然后你必须利用doctrine postLoad事件来注入相同的依赖项(例如通过setter)。 这种重复有点糟糕。