Octobercms 提取Vue.js应用程序的主菜单项

Octobercms 提取Vue.js应用程序的主菜单项,octobercms,octobercms-plugins,octobercms-backend,Octobercms,Octobercms Plugins,Octobercms Backend,为了在10月份构建Vue菜单,我在后端插件中有以下代码。在JSON数据中获取静态页面页面,保持页面项目缩进,这样做很好: $theme = \Cms\Classes\Theme::getEditTheme(); $pageList = new \RainLab\Pages\Classes\PageList($theme); $treePageList = $pageList->getPageTree(true); 现在,我想提取10月份的“RainLab静态页面/菜单/主菜单”项,保留菜

为了在10月份构建Vue菜单,我在后端插件中有以下代码。在JSON数据中获取静态页面页面,保持页面项目缩进,这样做很好:

$theme = \Cms\Classes\Theme::getEditTheme();
$pageList = new \RainLab\Pages\Classes\PageList($theme);
$treePageList = $pageList->getPageTree(true);
现在,我想提取10月份的“RainLab静态页面/菜单/主菜单”项,保留菜单项缩进。(在我的后端插件中)

谢谢你能告诉我怎么买这些菜单吗


您可以在
布局文件
上添加
静态菜单组件
ajax处理程序
,以处理ajax请求

您需要添加
静态菜单
,并选择适当的
菜单

现在是处理程序代码

function onGetMenu() {
    $menuItems = $this['staticMenu']->menuItems();
    return Response::json(['mainMenu' => $menuItems]);
}
Ajax请求

你可以用菜单来回应

如果你想看完整的图片教程,请在这里签出


如果有任何疑问,请发表评论。

您可以在
布局文件
上添加
静态菜单组件
ajax处理程序
,以处理ajax请求

您需要添加
静态菜单
,并选择适当的
菜单

现在是处理程序代码

function onGetMenu() {
    $menuItems = $this['staticMenu']->menuItems();
    return Response::json(['mainMenu' => $menuItems]);
}
Ajax请求

你可以用菜单来回应

如果你想看完整的图片教程,请在这里签出


如果有任何疑问,请发表评论。

谢谢Hardik Satasiya,我用以下代码解决了它:

if(class_exists('\\Rainlab\\Pages\\Classes\\Menu')) {
    $theme = \Cms\Classes\Theme::getActiveTheme();
    $menus = \RainLab\Pages\Classes\Menu::listInTheme($theme, 'mainmenu');
    $menu_full = json_decode($menus);

    return getRecursiveMenu($menus);
}

function getRecursiveMenu($menus) {
    static $level = 0;
    static $next_level = 0;
    $menuDetails = [];
    foreach($menus as $iMenu) {
        $detail = [];
        if ($level == $next_level) {
            $detail['menu_name'] = ['name' => $iMenu->name];
        } else
            $detail['menu_name'] = ['title' => $iMenu->title, 'url' => $iMenu->reference];

        $level++;
        $items = getRecursiveMenu($iMenu->items);

        if(count($items) > 0 ) {
            $detail['menu_items'] = $items;
        }
        $menuDetails[] = $detail;
        $next_level++;
    }
    return $menuDetails;
}

谢谢你的帮助

谢谢Hardik Satasiya,我用以下代码解决了它:

if(class_exists('\\Rainlab\\Pages\\Classes\\Menu')) {
    $theme = \Cms\Classes\Theme::getActiveTheme();
    $menus = \RainLab\Pages\Classes\Menu::listInTheme($theme, 'mainmenu');
    $menu_full = json_decode($menus);

    return getRecursiveMenu($menus);
}

function getRecursiveMenu($menus) {
    static $level = 0;
    static $next_level = 0;
    $menuDetails = [];
    foreach($menus as $iMenu) {
        $detail = [];
        if ($level == $next_level) {
            $detail['menu_name'] = ['name' => $iMenu->name];
        } else
            $detail['menu_name'] = ['title' => $iMenu->title, 'url' => $iMenu->reference];

        $level++;
        $items = getRecursiveMenu($iMenu->items);

        if(count($items) > 0 ) {
            $detail['menu_items'] = $items;
        }
        $menuDetails[] = $detail;
        $next_level++;
    }
    return $menuDetails;
}

谢谢你的帮助

您可以创建自己的插件并调用静态页面的菜单组件。将这些信息转换为json()响应。谢谢Pettis,我已经为此创建了一个插件。我的问题是如何“查询”静态页面组件?您可以创建自己的插件并调用静态页面的菜单组件。将这些信息转换为json()响应。谢谢Pettis,我已经为此创建了一个插件。我的问题是关于如何“查询”静态页面组件的?谢谢Hardik给出的这个好答案。我修改了我的帖子以澄清问题,但我想在我的后端插件中运行它。我是否需要Ajax请求,或者它是用于前端请求的?这意味着您只需要查询它,或者您需要通过ajax@Incremental你能检查一下吗?这可能对你有帮助:谢谢Hardik的回答。我修改了我的帖子以澄清问题,但我想在我的后端插件中运行它。我是否需要Ajax请求,或者它是用于前端请求的?这意味着您只需要查询它,或者您需要通过ajax@Incremental你能检查一下吗这可能对你有帮助:当然,伙计,我很高兴它帮助了你:)当然,伙计,我很高兴它帮助了你:)