Пользовательские права администратора модуля Magento - PullRequest
3 голосов
/ 07 июля 2010

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

У кого-нибудь есть идеи?Это звучит так, будто в моем файле config.xml что-то не так, поэтому я опубликую это здесь на всякий случай:

<config>
<modules>
    <Wpe_Vendorlist>
        <version>0.1.0</version>
    </Wpe_Vendorlist>
</modules>
<admin>
    <routers>
        <vendorlist>
            <use>admin</use>
            <args>
                <module>Wpe_Vendorlist</module>
                <frontName>vendorlist</frontName>
            </args>
        </vendorlist>
    </routers>
</admin>
<adminhtml>
    <menu>
        <customer>
            <children>
                <items module="vendorlist">
                    <title>SO Vendor List</title>
                    <sort_order>999</sort_order>
                    <action>vendorlist/adminhtml_vendorlist</action>
                </items>
            </children>
        </customer>
    </menu>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <Wpe_Vendorlist>
                        <title>Vendorlist Module</title>
                        <sort_order>10</sort_order>
                    </Wpe_Vendorlist>
                </children>
            </admin>
        </resources>
    </acl>
    <layout>
        <updates>
            <vendorlist>
                <file>vendorlist.xml</file>
            </vendorlist>
        </updates>
    </layout>
</adminhtml>
<global>
    <models>
        <vendorlist>
            <class>Wpe_Vendorlist_Model</class>
            <resourceModel>vendorlist_mysql4</resourceModel>
        </vendorlist>
        <vendorlist_mysql4>
            <class>Wpe_Vendorlist_Model_Mysql4</class>
            <entities>
                <vendorlist>
                    <table>vendorlist</table>
                </vendorlist>
            </entities>
        </vendorlist_mysql4>
    </models>
    <resources>
        <vendorlist_setup>
            <setup>
                <module>Wpe_Vendorlist</module>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </vendorlist_setup>
        <vendorlist_write>
            <connection>
                <use>core_write</use>
            </connection>
        </vendorlist_write>
        <vendorlist_read>
            <connection>
                <use>core_read</use>
            </connection>
        </vendorlist_read>
    </resources>
    <blocks>
        <vendorlist>
            <class>Wpe_Vendorlist_Block</class>
        </vendorlist>
    </blocks>
    <helpers>
        <vendorlist>
            <class>Wpe_Vendorlist_Helper</class>
        </vendorlist>
    </helpers>
</global>
</config>

Ответы [ 5 ]

5 голосов
/ 08 июля 2010

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

Для этого конкретного вопроса, вот как я это сделал в моем модуле, с именем вашего модуля:

<acl><!-- permits -->
    <resources>
        <admin>
            <children>
                <customer translate="title" module="vendorlist"><!-- this tag matches the menu tag, and the same for his children -->
                    <title>what will appears in the checkboxes tree when you create a role</title>
                    <children>
                        <firstchild>
                            <title>what will appears in the checkboxes tree when you create a role</title>
                        </firstchild>
                    </children>
                </customer>
            </children>
        </admin>
    </resources>
</acl>

Вам не понадобится:

                <children>
                    <firstchild>
                        <title>what will appears in the checkboxes tree when you create a role</title>
                    </firstchild>
                </children>

поскольку у вас нет детей в вашем модуле, кажется, я просто привел это в качестве примера.
Я надеюсь, что это поможет

2 голосов
/ 01 марта 2011

Пожалуйста, измените ваш config.xml и замените

<acl>
    <resources>
        <all>
            <title>Allow Everything</title>
        </all>
        <admin>
            <children>
                <Wpe_Vendorlist>
                    <title>Vendorlist Module</title>
                    <sort_order>10</sort_order>
                </Wpe_Vendorlist>
            </children>
        </admin>
    </resources>
</acl>

на

<acl>
    <resources>
        <all>
            <title>Allow Everything</title>
        </all>
        <admin>
            <children>
                <vendorlist>
                    <title>Vendorlist Module</title>
                    <sort_order>10</sort_order>
                </vendorlist>
            </children>
        </admin>
    </resources>
</acl>

Изменять список поставщиков нужно только после дочернего тега вместо Wpe_Vendorlist.Это изменение сработало для меня в моем пользовательском модуле, надеюсь, могут помочь и другие.

1 голос
/ 28 марта 2013

Вы должны использовать только строчные буквы в именах ресурсов и пунктов меню. См. Конструктор в app / code / core / Mage / Adminhtml / Block / Permissions / Tab / Rolesedit.php

public function __construct()
{
    ...

    foreach ($rules_set->getItems() as $item) {
        $itemResourceId = $item->getResource_id();
        if (array_key_exists(strtolower($itemResourceId), $resources) && $item->getPermission() == 'allow') {
            $resources[$itemResourceId]['checked'] = true;
            array_push($selrids, $itemResourceId);
        }
    }

    ....

Я бы также предложил вам перенести информацию acl и меню в adminhtml.xml вместо того, чтобы поместить ее в config.xml.

Другая проблема заключается в том, что у вас должна быть совершенно одинаковая структура как в меню, так и в деревьях ACL, поэтому ваш ACL отражает структуру меню, и magento знает, что включить, когда разрешение предоставляется роли. Вот отличная статья Ивана Чепурного об этом здесь

Итак, после изменений вы получите нечто похожее на это: adminhtml.xml :

<adminhtml>
    <menu>
        <customer>
            <children>
                <wpe_vendorlist module="vendorlist">
                    <title>SO Vendor List</title>
                    <sort_order>999</sort_order>
                    <action>vendorlist/adminhtml_vendorlist</action>
                </wpe_vendorlist>
            </children>
        </customer>
    </menu>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <customer>
                        <children>
                            <wpe_vendorlist>
                                <title>Vendorlist Module</title>
                                <sort_order>10</sort_order>
                            </wpe_vendorlist>
                        </children>
                    </customer>
                </children>
            </admin>
        </resources>
    </acl>
</adminhtml>
0 голосов
/ 11 апреля 2012

после изменения синтаксиса в модуле acl tag отображается в пользовательском разрешении модуля

0 голосов
/ 08 июля 2010

Я нашел что-то на форуме magento. Перейти по следующей ссылке: http://www.magentocommerce.com/boards/viewthread/78673/

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

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