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

make prepareMenu

parent 4ebf14ce
No related branches found
No related tags found
1 merge request!4Ptps|controller 4
<?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);
}
}
<?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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment