Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 插件子菜单管理_Php_Plugins_Impresspages - Fatal编程技术网

Php 插件子菜单管理

Php 插件子菜单管理,php,plugins,impresspages,Php,Plugins,Impresspages,如何为插件创建子菜单项 我已经检查了系统模块,它有子菜单类,并在Admin上进行了筛选。这是否可以在不攻击或重写类的情况下实现 谢谢。当然可以 布局响应对象具有方法“setLayoutVariable”。接受的变量之一是“子菜单”。如果提供Ip\Menu\Item对象数组,将生成一个子菜单。这里有一个例子。将其放入Plugin\Application\Event.php文件: <?php namespace Plugin\Application; class Event {

如何为插件创建子菜单项

我已经检查了系统模块,它有子菜单类,并在Admin上进行了筛选。这是否可以在不攻击或重写类的情况下实现

谢谢。

当然可以

布局响应对象具有方法“setLayoutVariable”。接受的变量之一是“子菜单”。如果提供Ip\Menu\Item对象数组,将生成一个子菜单。这里有一个例子。将其放入Plugin\Application\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);
            }

        }
    }

}
<?php

namespace Plugin\Application;


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

        return $menu;
    }
}