2010-07-07 7 views
3

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

У кого-нибудь есть идеи? Это своего рода звучит как есть что-то у меня в файле 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

Я настоятельно рекомендую вам взглянуть на Alan Storm's article о конфигурации системы и остальной части его серии, это лучшая информация, которую я нашел о программировании 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> 

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

+0

Спасибо человеку! Для меня проблема была в окошке тегов детей! –

0

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

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

2

Пожалуйста, измените 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> 

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

+1

moduleCreator создает конфигурационный файл модуля с неправильным синтаксисом для acl tage. это проблема. – Goysar

0

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

1

Вы должны использовать только строчные символы в именах ресурсов и пунктов меню. См конструктор на приложение/код/​​ядра/Mage/Adminhtml/Block/Права доступа/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); 
     } 
    } 

    .... 

Я также хотел бы предложить вам рассмотреть перемещение аКЛ и меню информацию для adminhtml.xml вместо имея его на config.xml.

Другая проблема заключается в том, что вы должны иметь точно такую ​​же структуру как в меню, так и в acl-деревьях, поэтому ваш acl отражает структуру меню, а magento знает, что включить, когда разрешение предоставляется роли. Там отличная статья Ивана Chepurnyi об этом here

Таким образом, после изменения, вы бы в конечном итоге с коснуться похожее на это, на 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> 
Смежные вопросы