2014-04-27 125 views
1

如何爲插件創建子菜單項。插件子菜單管理

我檢查了系統模塊,它有子菜單類,並在管理員上過濾。這可能沒有黑客或覆蓋類。

謝謝。

回答

1

當然可以。

佈局響應對象具有方法'setLayoutVariable'。被接受的變量之一是'子菜單'。如果您提供了Ip \ Menu \ Item對象的數組,則會生成一個子菜單。這是一個例子。把它放在插件\應用\ Event.php文件:

<?php 

namespace Plugin\Application; 


class Event 
{ 
    public static function ipBeforeController() 
    { 

     if (true) { //find out some kind of a condition when you want a submenu. (eg. ipRequest()->getControllerClass() == 'Plugin\XXX\AdminController') 
      $submenu = array(); 
      $submenuItem = new \Ip\Menu\Item(); 
      $submenuItem->setTitle('Test'); 
      $submenuItem->setUrl('http://www.example.com'); 
      $submenu[] = $submenuItem; 

      if (is_object(ipResponse()) && method_exists(ipResponse(), 'setLayoutVariable')) { 
       ipResponse()->setLayoutVariable('submenu', $submenu); 
      } 

     } 
    } 

} 

您可以使用過濾網過濾主菜單。將以下代碼添加到Plugin \ Application \ Filter.php文件中:

<?php 

namespace Plugin\Application; 


class Filter { 
    /** 
    * @param \Ip\Menu\Item[] $menu 
    * @param $info 
    */ 
    public static function ipAdminMenu ($menu, $info) 
    { 
     //modify $menu 

     return $menu; 
    } 
} 
+0

正是我需要的。 – flakerimi