Как прочитать значение конфигурации в Symfony2 в классе Model - PullRequest
3 голосов
/ 06 сентября 2011

Я определил хеш-соль в своем config.yml и хотел бы получить это в своем классе User, есть идеи о том, как это сделать?Я видел множество примеров того, как использовать это в классе контроллера, но не в модели?

Спасибо

Ответы [ 2 ]

5 голосов
/ 06 сентября 2011

У меня был тот же вопрос. Было бы неплохо, если бы было что-то похожее на sfConfig::get() из Symfony 1. В любом случае, я думаю, что на самом деле это может быть случай «есть лучший способ сделать это». Что если вы просто используете инъекцию сеттера, когда создаете экземпляр класса User (т.е. используете метод setHashSalt())? Если вы создаете экземпляр с контроллера, вы можете использовать $this->container->parameters['hash_salt'].

AFAIK, нет доступа к параметрам config.yml без использования объекта container. Мне очень любопытно узнать, есть ли у кого более легкий путь.

0 голосов
/ 24 марта 2014

Смотрите мой ответ здесь:

Как мне прочитать параметры конфигурации из Symfony2 config.yml?

с

  • ПЕРВЫЙ ПОДХОД: Отдельный блок конфигурации, получение его в качестве параметра
  • ВТОРОЙ ПОДХОД: Отдельный блок конфигурации, внедрение конфигурации в службу

Отвечая вам, если вы хотите внедрить это вModel, лучший подход - иметь Manager, который действует как фабрика модели, тогда менеджер может внедрить себя в модель, чтобы модель могла получить к ней доступ и, следовательно, получить доступ к конфигурации.

Скажем, у вашей модели есть Car и House, если они связаны, у вас может быть CityManager с getAllCars() или 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;
    }
}

Заполните значение, как в статье, связанной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...