2013-07-16 3 views
0

Я хочу получить значение из config.yml из объекта symfony2.получение значения config.yml из объекта

config.yml:

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

Entity:

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

Проблема с доктриной сущностями, когда они извлекаются из базы данных. Они основаны на доктрине, не передаваясь конструктором и, следовательно, могут иметь не те же зависимости, чем когда вы делаете заявления new.

Из-за этого может быть плохой идеей, чтобы ваша модель осознала это. Возможно, вы предпочитаете использовать внешнюю службу и предпочитаете анемичные модели (простые объекты данных). Затем вы делегируете всю логику выделенной службе.

Если вы этого не хотите, вы можете добавить свой depedenceis вручную (например, в конструктор). Это работает только тогда, когда вы начинаете сущность вручную.

Тогда вам нужно использовать доктрину postLoad, чтобы ввести те же зависимости (например, с помощью сеттера). Это дублирование несколько плохое.

+0

Существует другое решение, которое является хорошей идеей: http://dev4theweb.blogspot.ch/2012/08/how-to-access -configuration-values.html – Ueli

+0

это так же хорошо, как sfConfig для symfony1. Синглтонная картина ломает хорошую тестируемость. – Florian

Смежные вопросы