Symfony2 Хранить настройки в БД с кешированием - PullRequest
3 голосов
/ 30 октября 2011

Я новичок в фреймворке symfony2, и я не знаю, как правильно хранить настройки приложения.

Что я хочу:

  • Сохранить настройки моего приложения в базе данных (нужно для админ-центра)
  • При кэшировании этого параметра в системе кеширования Symfony (app / cache / dev | prod)
  • , а затем легко получить значения

Возможно ли это?

1 Ответ

3 голосов
/ 31 октября 2011

Вы можете реализовать свой собственный класс ресурсов, реализующий ResourceInterface , а также реализовать собственный класс загрузчика, реализующий LoaderInterface .

Ваш загрузчик должен загрузить ваши параметры в сконфигурированный ContainerBuilder, как это делают FileLoader и другие из того же пространства имен.

Как только вы закончите, вы можете перезаписать метод getContainerLoader ядра вашего приложения, чтобы добавить ваш загрузчик к существующим:

protected function getContainerLoader(ContainerInterface $container)
{
    $locator = new FileLocator($this);
    $resolver = new LoaderResolver(array(
        new XmlFileLoader($container, $locator),
        new YamlFileLoader($container, $locator),
        new IniFileLoader($container, $locator),
        new PhpFileLoader($container, $locator),
        new ClosureLoader($container),
        new DatabaseLoader($container),

    ));

    return new DelegatingLoader($resolver);
}
...