diff --git a/src/Controller/PrepareMenuController.php b/src/Controller/PrepareMenuController.php new file mode 100644 index 0000000000000000000000000000000000000000..8f6cfcabaed6ae0ac345f852d8a504b50ce795a5 --- /dev/null +++ b/src/Controller/PrepareMenuController.php @@ -0,0 +1,22 @@ +<?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); + } +} diff --git a/src/Repository/PrepareMenuRepository.php b/src/Repository/PrepareMenuRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..ee842c428fcf08a4c68da13f77d2e9c3bcc518e8 --- /dev/null +++ b/src/Repository/PrepareMenuRepository.php @@ -0,0 +1,27 @@ +<?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; +}