2010-07-07 76 views
3

我已經創造了Magento的幾個自定義模塊,當我嘗試將權限分配給模塊(選中該複選框),當我點擊保存取消選中複選框。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

我強烈推薦你去看看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

感謝的人!對我來說,問題出在兒童標籤錯字! – 2015-07-16 13:28:10

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以錯誤的語法創建模塊配置文件。那就是問題所在。 – Goysar 2012-02-23 15:08:43

0

改變ACL標籤模塊語法後,將在自定義模塊允許

1

你應該在你的資源和菜單項名稱只使用小寫字符。查看應用程序/代碼/核心構造函數/法師/ Adminhtml /座/許可/標籤/ 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的知道什麼時候一個獲准在一個角色,以使什麼。有一個偉大的文章伊萬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> 
相關問題