Пользовательский модуль Magento - где хранить включает - PullRequest
1 голос
/ 19 августа 2010

Я создаю пользовательский модуль magento и не могу выбрать лучшее место для хранения некоторых конфигурационных файлов, которые мне требуются вместе с модулем?

Кто-нибудь предлагает лучшее место для этого?Должно ли оно быть в корне модуля или с помощниками?

Редактировать: В тех же строках, что и этот вопрос: допустимо ли иметь папку в корне пространства имен для модулей для включенийчто будет разделено между модулями?

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Если эти файлы для конфигурации, они принадлежат etc.Думайте о папке etc так же, как о папке etc системы unix / linux / bsd.Это место, где вы размещаете информацию о конфигурации.Соглашение состоит в том, что вы должны использовать XML-файл для хранения ваших данных конфигурации, а затем загрузить его с помощью

Mage::getConfig()->loadModulesConfiguration('your-xml-name-here.xml')

Когда вы используете метод loadModulesConfiguration для загрузки значений конфигурации, Magento объединяет файлы XML для ВСЕХ модулейв системе в одно большое дерево.Это позволяет другим модулям, которые вы напишите (или другим, напишете), поделиться информацией о конфигурации.

Вам не нужно , чтобы сделать это, , но etc определенно является определенным местом для любых файлов конфигурации, которые вы хотите включить в свой модуль.Кроме того, какой бы метод вы ни выбрали, я бы выбрал уникальное имя файла (packagename_modulename.xml, packagename_modulename.inc и т. Д.), Чтобы убедиться в малой вероятности того, что кто-то в Magento может выбрать ваше имя для использования в будущей версии.

В том же ключе, что и этот вопрос: допустимо ли иметь папку в корне пространства имен для модулей для включений, которые будут совместно использоваться модулями?

Нет, это было бы неприемлемо.Если вы хотите использовать общую конфигурацию, используйте метод, который я упоминал выше.Если модулям необходимо обмениваться другой информацией друг с другом, они должны либо делать это напрямую (один модуль создает экземпляр модели другого модуля), либо вы должны определить центральный «посреднический» модуль, который обрабатывает все межмодульное взаимодействие.Если вам интересна эта тема, я бы порекомендовал первые несколько глав Построения объектно-ориентированного программного обеспечения Мейера .Если вы можете обойти все «как реализовать низкоуровневые структуры данных», как это было в старых книгах по программированию, это отличное введение в то, что люди из CS говорят, когда говорят «модуль».

(также стоит упомянуть, что, если имеются простые значения конфигурации, изучение того, как использовать Magento System Config Административный раздел, того стоит.)

0 голосов
/ 19 августа 2010

Возможно, вам это сойдет с рук, но вы намеренно избегаете Magento.Внутри модуля создайте каталог с именем etc и поместите в него XML-файл конфигурации с именем config.xml.Этот файл будет прочитан и включен в конфигурацию Magento, что означает, что вам не придется пытаться покинуть платформу, чтобы получить ваши данные конфигурации.Посмотрите на существующие файлы для некоторых примеров.

Другое преимущество этого подхода состоит в том, что преобразование файлов конфигурации XML в параметры конфигурации пользователя (в панели администратора) не слишком сложно (требуется незначительный рефакторинг).), так что позже вы сможете легко изменить метод конфигурации.

Надеюсь, это поможет!

Спасибо, Джо

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