2014-04-27 95 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