Доступ к конфигурации модуля Symfony из других модулей - PullRequest
1 голос
/ 12 сентября 2011

Я занимаюсь разработкой довольно сложного, в основном, AJAX-приложения с использованием Symfony 1.4.Для меня было бы очень полезно использовать некоторые пользовательские свойства для моих модулей, которые я определил в файлах конфигурации module.yml , например:

all:
  first_property: value1
  second_property: value2

и т. Д.

Эти свойства будут использоваться в основном для форматирования представлений, генерируемых javascript, с использованием значений JSON, возвращаемых из моих модулей.Например - в моем контроллере основного модуля (используется для рендеринга базового представления) я хотел использовать что-то вроде этого:

// In frontend/modules/main
$property sfConfig::get('mod_somemodule_someproperty');

Это не будет работать, потому что по умолчанию свойства модуля не доступны внемодуль sfConfig :: get () .

Мой вопрос:

Можно ли как-то получить доступ к этим свойствам?

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

Спасибо.

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Если вы хотите получить доступ к конфигурации модуля вне модуля, почему бы не сделать настройку конфигурацией уровня приложения?И если вы хотите поделиться конфигурацией уровня приложения между приложениями, конфигурация должна быть на уровне проекта.

1 голос
/ 12 сентября 2011

Полагаю, вы знакомы с конфигурацией app.yml? Который используется для хранения настроек конфигурации во всем приложении, а не только в выбранном модуле. Это место для хранения более общих настроек ...

Но, что сказал. Вы можете просто открыть module.yml на ваш выбор с помощью класса sfYaml. Примерно так (псевдокод)

$moduleName = 'module';
$path = sfConfig::get('sf_app_dir').'/modules/'.$moduleName.'/config/module.yml';
$moduleConfig = sfYaml::load($path);
$property = $moduleConfig['all']['first_property'];

При желании вы можете объединить ключ all элементов с выбранной средой.

0 голосов
/ 12 сентября 2011

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

...