Loading src/Controller/PrepareMenuController.php 0 → 100644 +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); } } src/Repository/PrepareMenuRepository.php 0 → 100644 +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; } Loading
src/Controller/PrepareMenuController.php 0 → 100644 +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); } }
src/Repository/PrepareMenuRepository.php 0 → 100644 +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; }