public function provide($container) { $instance = $this->instanceManager->getInstanceFromRequest(); $pages = []; try { $container = $this->navigationManager->findContainerByNameAndInstance($container, $instance); } catch (ContainerNotFoundException $e) { return []; } $key = hash('sha256', serialize($container)); if ($this->storage->hasItem($key)) { return $this->storage->getItem($key); } foreach ($container->getPages() as $page) { $addPage = $this->buildPage($page); $hasUri = isset($addPage['uri']); $hasMvc = isset($addPage['action']) || isset($addPage['controller']) || isset($addPage['route']); $hasProvider = isset($addPage['provider']); if ($hasUri || $hasMvc || $hasProvider) { $pages[] = $addPage; } } $this->storage->setItem($key, $pages); return $pages; }
public function __construct(EntityManager $entityManager, NavigationManagerInterface $navigationManager) { parent::__construct('container'); $hydrator = new ObjectHydrator($entityManager); $filter = new InputFilter(); $types = []; foreach ($navigationManager->getTypes() as $type) { $types[$type->getId()] = $type->getName(); } $this->setHydrator($hydrator); $this->setInputFilter($filter); $this->add((new Select('type'))->setLabel('Type:')->setOptions(['value_options' => $types])); $this->add(['type' => 'Common\\Form\\Element\\ObjectHidden', 'name' => 'instance', 'options' => ['object_manager' => $entityManager, 'target_class' => 'Navigation\\Entity\\Container']]); $this->add((new Submit('submit'))->setValue('Save')->setAttribute('class', 'btn btn-success pull-right')); $filter->add(['name' => 'type', 'required' => true]); $filter->add(['name' => 'instance', 'required' => true]); }
public function updateParameterAction() { $parameter = $this->navigationManager->getParameter($this->params('parameter')); $this->assertGranted('navigation.manage', $parameter->getPage()); $this->parameterForm->bind($parameter); if ($this->getRequest()->isPost()) { $data = $this->params()->fromPost(); $this->parameterForm->setData($data); if ($this->parameterForm->isValid()) { $this->navigationManager->updateParameter($this->parameterForm); $this->navigationManager->flush(); return $this->redirect()->toUrl($this->referer()->fromStorage()); } } else { $this->referer()->store(); } $view = new ViewModel(['form' => $this->parameterForm]); $view->setTemplate('navigation/parameter/update'); return $view; }