2017-01-06 2 views
0

Я работаю над проектом, который требует от меня, чтобы загрузить параметры конфигурации из базы данныхЗагрузка Zend Framework 2 Config из базы данных

У меня есть локальный конфигурационный файл filters.local.php Я хочу, чтобы удалить его и поместить значения в базе данных, и когда приложения загружаются вместо автоматической загрузки значений конфигурации из папки автозагрузки или любого другого конфигурационного файла, я хочу слить конфигурацию из базы данных в zend framework 2 config.

Есть ли в любом случае для достижения этой цели?

+0

Есть ли что вы пробовали до сих пор? Как реализовать метод в вашем приложении 'module.php', который строит соединение с базой данных по каждому запросу или вы хотите его кешировать, поэтому вы не запрашиваете каждый запрос? – Kwido

+0

Я пробовал метод конфигурационных событий, где в методе init.Mp метода мы запускаем событие MERGE_CONFIG, но я не могу получить в нем EntityManager. –

+0

Как в том, как получить 'Doctrine \ Orm \ EntityManager' в вашем' Application \ Module :: onBootstrap (MvcEvent $ event) '-' $ event-> getApplication() -> getServiceManager() -> get ('doctrine. entitymanager.orm_default ') 'или показать какой-то код того, что вы на самом деле пытались использовать. Потому что это в значительной степени предположение, которое я сделал из-за того, что вы называете его «EntityManager». Покажите нам некоторые из ваших 'module.php', где вы запускаете событие для объединения конфигураций, чтобы мы поняли. – Kwido

ответ

0

Zend Config Writer .

С Zend Config Writer вы можете записывать файлы конфигурации с вашими значениями из базы данных.

Пример:

  • В контроллер

    public function writeFiltersConfigAction(){ 
        $config = new \Zend\Config\Config(array(), true); 
    
        $config->filters = array(); 
    
        $citiesArray = array(1 => Paris, 2=>London, 3=>Berlin); // Of course, these values can be taken from database 
    
        $config->filters->cities = $citiesArray; 
    
        $writer = new \Zend\Config\Writer\PhpArray(); 
        $writer->toFile('config/autoload/filters.local.php',$config); 
    } 
    
  • Когда вы получите доступ к записи-фильтры-конфигурации в вашем браузере, вы увидите, что Zend Config Writer создаст filters.local. php-файл с php-массивом.

  • Вы можете создать cronjob на этой акции, так что filters.local.php обновляется, как часто вы хотите

  • После этого, конечно, вы можете прочитать ваш конфигурационный файл в приложение. Вы будете читать фильтры из конфигурационных файлов, избегая базы данных запросов каждый раз, когда

    $config = $this->getServiceLocator()->get('Config'); 
    $filters = $config['filters'];