Commit 368df2b7 authored by Akex's avatar Akex Committed by Александр Плохих
Browse files

make prepareMenu

parent 4ebf14ce
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;

class PrepareMenuController extends AbstractController
{
    #[Route('/prepare/menu', name: 'app_prepare_menu')]
    public function index(Request $request): Response
    {
        $array = $request->toArray();

        $return = prepareMenu($array);

        return new JsonResponse($return, Response::HTTP_OK);
    }
}
+27 −0
Original line number Diff line number Diff line
<?php
/**
 * Сгруппировать подразедлы в верхние разделы меню
 * Дочерние элементы поместить в массив родителя с ключом submenu
 * Значение под ключом depth определяет уровень раздела
 * Массив $aMenu всегда начинается с элемента depth = 0, все последующие элементы с depth = 1 являются его дочерними
 * элементами
 * @param array $aMenu
 * @return array
 */
function prepareMenu(array $aMenu): array {
    $returnableAMenu = [];
    foreach ($aMenu as $menuPoint){
        $depth = $menuPoint["depth"];
        if ($depth === 1){
            $tempArray = array_pop($returnableAMenu);
            $tempArray['submenu'][] = $menuPoint;
            $returnableAMenu[] = $tempArray;
        }
        else{
            $returnableAMenu[] = $menuPoint;
        }

    }

    return $returnableAMenu;
}