Ошибка 404 в пользовательской конфигурации Magento в админке - PullRequest
10 голосов
/ 06 декабря 2011

Я разрабатываю пользовательский модуль SMS в Magento 1.6.

Я настроил файл system.xml для управления соответствующими полями пользовательской конфигурации.

Появится пункт меню,но когда я щелкаю по нему, вместо списка ожидаемых полей конфигурации отображается страница с ошибкой 404.

Можете ли вы увидеть какие-либо ошибки в моем коде?

<config>
<tabs>
    <mynew_tab translate="label">
        <label>SMS Gateway Integration</label>
        <sort_order>100</sort_order>
    </mynew_tab>
</tabs>
<sections>
    <smsconfig  translate="label">
        <label>SMS Gateway Integration</label>
        <sort_order>200</sort_order>
        <show_in_default>1</show_in_default>
        <show_in_website>1</show_in_website>
        <show_in_store>1</show_in_store>
        <tab>mynew_tab</tab>
        <groups>
            <sms_group translate="label">
                <label>My Custom Configurations</label>
                <comment>This is example of custom configuration.</comment>
                <sort_order>10</sort_order>
                <show_in_default>1</show_in_default>
                <show_in_website>1</show_in_website>
                <show_in_store>1</show_in_store>
                <fields>
                    <sms_enabled translate="label tooltip comment">
                        <label>Is Enabled</label>
                        <frontend_type>select</frontend_type>
                        <source_model>adminhtml/system_config_source_yesno</source_model>
                        <sort_order>0</sort_order>
                        <show_in_default>1</show_in_default>
                        <show_in_website>1</show_in_website>
                        <show_in_store>1</show_in_store>
                        <comment>Enable this module.</comment>
                    </sms_enabled>
                    <sms_username translate="label tooltip comment">
                        <label>Sender Email</label>
                        <frontend_type>text</frontend_type>
                        <sort_order>1</sort_order>
                        <show_in_default>1</show_in_default>
                        <show_in_website>1</show_in_website>
                        <show_in_store>1</show_in_store>
                        <comment>Username of the SMS gateway.</comment>
                    </sms_username>
                    <sms_password translate="label tooltip comment">
                        <label>Sender Email</label>
                        <frontend_type>text</frontend_type>
                        <sort_order>1</sort_order>
                        <show_in_default>1</show_in_default>
                        <show_in_website>1</show_in_website>
                        <show_in_store>1</show_in_store>
                        <comment>Password of the SMS gateway.</comment>
                    </sms_password>
                </fields>
            </sms_group>
        </groups>
    </smsconfig>
</sections>

После запроса Бена мы разместили файл adminhtml.xml.Я поместил содержимое файла XML.

<config>
<acl>   
    <resources>
        <admin>
            <children>
                <system>
                    <children>
                        <config>
                            <children>
                                <sms translate="title" module="sms">
                                    <title>SMS Gateway Section</title>
                                </sms>
                            </children>
                        </config>
                    </children>
                </system>
           </children>
       </admin>
   </resources>
</acl>

Но до 404 ошибка приходит ...

Ответы [ 3 ]

36 голосов
/ 06 декабря 2011

Ошибка 404 в конфигурации системы часто означает, что существует проблема с ACL. Вероятно, вам не хватает соответствующего узла acl в файле adminhtml.xml вашего модуля:

<acl>
    <resources>
        <admin>
            <children>
                <system>
                    <children>
                        <config>
                            <children>
                                <smsconfig> <!-- translate="title" module="sms_config" if appropriate and depending on config -->
                                    <title>Your Section</title>
</...>

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

3 голосов
/ 16 октября 2015

Делайте то, что сказал @benmarks, и обязательно добавляйте правильных детей (в вашем случае) smsconfig

(@ отметки используются sms_config вместо smsconfig)

<!-- namespace/modulename/etc/adminhtml.xml -->
<acl>
    <resources>
        <admin>
            <children>
                <system>
                    <children>
                        <config>
                            <children>
                                <smsconfig> <!-- translate="title" module="sms_config" if appropriate and depending on config -->
                                    <title>Your Section</title>
</...>

очистка кеша, выход администратора, логин администратора == работает

Подсказка : Если вы получили 404, посмотрите на URL (когда вы нажали на вкладку):

/index.php/admin/system_config/edit/section/mymodulename_something/...

Этот URL кажется до , точка до mymodulename_something:

<!-- namespace/modulename/etc/system.xml -->
<?xml version="1.0"?>
<config>
    <tabs>
        <mymodulename translate="label" module="mymodulename">
            <label>MyModuleName Awesome Label</label>
            <sort_order>1</sort_order>
        </mymodulename>
    </tabs>
    <sections>
        <mymodulename_something translate="label" module="mymodulename">
<!-- ... -->

чтобы ваш adminhtml.xml выглядел так:

<!-- namespace/modulename/etc/adminhtml.xml -->
<?xml version="1.0"?>
<config>
    <acl>
        <resources>
            <admin>
                <children>
                    <system>
                        <children>
                            <config>
                                <children>
                                    <mymodulename_something translate="title" module="mymodulename">
                                        <title>have no idea where this is showing up btw</title>
                                    </mymodulename_something>
                                </children>
                            </config>
                        </children>
                    </system>
                </children>
            </admin>
        </resources>
    </acl>
</config>
2 голосов
/ 06 июля 2015

Не стоит недооценивать необходимость выхода и повторного входа после внесения изменений в ACL.Даже если вы очистите кэш, вы все равно будете 404, пока не выйдете и не войдете в систему.

...