/** * List category trees. The select_node_id request parameter * allow to send back the tree where the node belongs with a selected reef attribute * * @param Request $request * * @throws AccessDeniedException * * @return array * * @Template */ public function listTreeAction(Request $request) { if (false === $this->securityFacade->isGranted($this->buildAclName('category_list'))) { throw new AccessDeniedException(); } $selectNodeId = $request->get('select_node_id', -1); try { $selectNode = $this->findCategory($selectNodeId); } catch (NotFoundHttpException $e) { $selectNode = $this->userContext->getUserCategoryTree($this->rawConfiguration['related_entity']); } return ['trees' => $this->categoryRepository->getTrees(), 'selectedTreeId' => $selectNode->isRoot() ? $selectNode->getId() : $selectNode->getRoot(), 'include_sub' => (bool) $request->get('include_sub', false), 'item_count' => (bool) $request->get('with_items_count', true), 'related_entity' => $this->rawConfiguration['related_entity']]; }
function let(TokenStorageInterface $tokenStorage, LocaleRepositoryInterface $localeRepository, ChannelRepositoryInterface $channelRepository, TokenInterface $token, User $user, LocaleInterface $en, LocaleInterface $fr, LocaleInterface $de, ChannelInterface $ecommerce, ChannelInterface $mobile, CategoryInterface $firstTree, CategoryInterface $secondTree, CategoryRepositoryInterface $productCategoryRepo, RequestStack $requestStack, ChoicesBuilderInterface $choicesBuilder) { $tokenStorage->getToken()->willReturn($token); $token->getUser()->willReturn($user); $en->getCode()->willReturn('en_US'); $fr->getCode()->willReturn('fr_FR'); $de->getCode()->willReturn('de_DE'); $en->isActivated()->willReturn(true); $fr->isActivated()->willReturn(true); $de->isActivated()->willReturn(true); $localeRepository->findOneByIdentifier('en_US')->willReturn($en); $localeRepository->findOneByIdentifier('fr_FR')->willReturn($fr); $localeRepository->findOneByIdentifier('de_DE')->willReturn($de); $localeRepository->getActivatedLocales()->willReturn([$en, $fr, $de]); $channelRepository->findOneBy([])->willReturn($mobile); $productCategoryRepo->getTrees()->willReturn([$firstTree, $secondTree]); $this->beConstructedWith($tokenStorage, $localeRepository, $channelRepository, $productCategoryRepo, $requestStack, $choicesBuilder, 'en_US'); }
/** * @return array * * @deprecated Please use CategoryRepositoryInterface::getTrees() instead */ public function getTrees() { return $this->categoryRepository->getTrees(); }
/** * Get user product category tree * * @return CategoryInterface */ public function getUserProductCategoryTree() { $defaultTree = $this->getUserOption('defaultTree'); return $defaultTree ?: current($this->categoryRepository->getTrees()); }