Magento: Как я могу иметь «флаг отладки» в моем расширении Magento? - PullRequest
2 голосов
/ 20 апреля 2011

Мне бы хотелось иметь флаг отладки в разрабатываемом расширении Magento. Я хотел бы, чтобы он был установлен в true, когда я разрабатываю и когда я выпускаю расширение для пользователей, его удаляют (по умолчанию false). Каков наилучший способ реализовать это?

Первое, что приходит на ум, - установить для этого флага значение по умолчанию false и установить его в true в моем файле app / etc / local.xml. Но как я могу ввести новый узел XML в local.xml и разобрать инфраструктуру Magento, если это для меня, и сделать его доступным для моего кода PHP? Есть ли другие, более простые подходы к этому?

Ответы [ 3 ]

3 голосов
/ 21 апреля 2011

Magento ECG дал мне хорошее решение на форумах Magento: http://www.magentocommerce.com/boards/viewthread/226496/

Цитируя их:

Одним из решений, чтобы установить и получить флаг отладки в вашем модуле, является:чтобы добавить его в config.xml в каталоге вашего модуля и т.д.

Вы можете добавить его в раздел.Итак, ваш раздел будет выглядеть так:

<default>
    <your_module>
        <debug>1</debug>     
    </your_module> 
</default>

И из кода вы можете получить это:

$debugFlag = Mage::getStoreConfig('your_module/debug');

И что я собираюсь сделатьсделать это положить тот же блок XML в моем файле local.xml.Таким образом, он включается только на моей машине для разработки и не публикуется с моим расширением Magento (как это делает собственный файл config.xml)

3 голосов
/ 20 апреля 2011

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

1 голос
/ 21 апреля 2011

Я бы использовал для этого admin/system/config Magento.

Добавьте соответствующий etc/system.xml к вашему модулю, например ::

<config>
    <!-- : -->
    <tabs>
        <!-- : -->
        <mycompany>
            <label>My Company Tab</label>
            <sort_order>99</sort_order>
        </mycompany>
        <!-- : -->
    </tabs>
    <!-- : -->
    <sections>
        <!-- : -->
        <mymodule>
            <label>My Module</label>
            <tab>mycompany</tab>
            <frontend_type>text</frontend_type>
            <sort_order>99</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <groups>
                <mygroup>
                    <label>My Group</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>99</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <fields>
                        <debug>
                            <label>Debug</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>99</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </debug>
                    </fields>
                </mygroup>
            </groups>
        </mymodule>
        <!-- : -->
    </sections>
</config>

Если секция mymodule еще не существовала ранее, вам также необходимо сначала определить контроль доступа для модуля (необходимо поместить в etc/config.xml вашего модуля):

</config>
    <!-- : -->
    <adminhtml>
        <!-- : -->
        <acl>
            <resources>
                <admin>
                    <children>
                        <system>
                            <children>
                                <config>
                                    <children>
                                        <mymodule >
                                            <title>My Module</title>
                                        </mymodule>
                                    </children>
                                </config>
                            </children>
                        </system>
                    </children>
                </admin>
            </resources>
        </acl>
        <!-- : -->
    </adminhtml>
    <!-- : -->
</config>

Теперь администраторы могут изменять определенный флаг отладки через бэкэнд Magento, выбрав

System -> Configuration - My Module - My Group - Debug - Yes|No

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

$sFlag = Mage::getStoreConfig('mymodule/mygroup/debug');     // null | '0' | '1'
$bFlag = Mage::getStoreConfigFlag('mymodule/mygroup/debug'); // true | false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...