2011-06-06 119 views
0

我想添加一個動態菜單到我的WebApp使用Catalyst::Model::MenuGrinder 該文檔不是很清楚如何使用此模型配置通過角色訪問。 有沒有人使用此模型實現了動態菜單? 我發現這篇文章在Catalyst Advent calendar,並已正確設置它我只是不知道如何配置它來限制基於角色的菜單選項。使用催化劑::型號:: MenuGrinder

任何幫助,將不勝感激 感謝

+0

沒有你試圖尋找的基類文檔' WWW :: MenuGrinder'。即使我沒有使用它。 – awake416 2011-06-07 19:41:08

回答

0

只要看一看這實際上產生的菜單模板文件。比方說,例如「Clothes」菜單應該只顯示給管理員。 您可以修改xml文件,如:

<item role="adminonly"><label>Clothes</label>... 

之後,你應該在菜單項BLOCK只檢查用戶是否具有所期望的作用:

[% BLOCK menuitem %] 
<ul [%- IF menu.class %]class="[% menu.class %]"[% END %]> 
[% FOREACH item = menu.item %] 
[% IF item.role %] 
    [% IF c.user_exists && c.check_user_roles(item.role) %] 
    <li [% IF item.active %]class="active"[% END %]> 
     <a href="[% item.target %]">[% item.label %]</a> 
     [% IF item.item %] 
     [% PROCESS menuitem 
     menu = item 
     %] 
    [% END %] 
    </li> 
    [% END %] 
[% END %] 
[% END %] 
</ul> 
[% END %] 

[% PROCESS menuitem %] 

PS:從來沒有測試上面的代碼

+1

謝謝Dimitar我得到了那件作品。他們是一個插件「RequirePrivilege」,它可以隱藏基於用戶角色的菜單選擇等。如果作者提供了一些有意義的文檔,這個模塊將非常有用。感謝您的幫助 – 2011-06-13 03:30:52

+0

非常歡迎您。如果他提供了一些例子,這將非常有用 – 2011-06-14 07:57:13

1

RequirePrivilege模塊所述,您可以通過添加諸如need_privneed_user_in_realm之類的密鑰來根據權限限制菜單條目。 MenuGrinder「特權」對應催化劑認證「角色」,所以如果你想要求用戶有一個部分的作用「管理員」,你只是做

<item> 
    <label>Admin Section</label> 
    <need_priv>admin</need_priv> 
    <item>...</item> 
    <item>...</item> 
</item>