Example #1
0
 protected function addMenuItem($menu, MenuItem $menuItem, $parent = null)
 {
     $container = $this->container;
     if (!($container->has('zym_menu.menu_manager') && $container->has('knp_menu.factory'))) {
         // ZymMenuBundle doesn't exist
         return;
     }
     /* @var $menuManager Entity\MenuManager */
     $menuManager = $this->container->get('zym_menu.menu_manager');
     /* @var $menuItemManager Entity\MenuItemManager */
     $menuItemManager = $this->container->get('zym_menu.menu_item_manager');
     // Management Menu
     $menu = $menuManager->findOneBy(array('name' => 'management'));
     if ($menu === null) {
         return;
     }
     $existingMenuItem = $menuItemManager->findMenuItemByName($menu, $menuItem->getName());
     if ($existingMenuItem instanceof Entity\MenuItem) {
         return;
     }
     if ($parent !== null) {
         $parentMenuItem = $menuItemManager->findMenuItemByName($menu, $parent);
         if ($parentMenuItem === null) {
             return;
         }
         $parentMenuItem->addChild($menuItem);
         $menuItemManager->createMenuItem($menuItem);
         $menuItemManager->saveMenuItem($parentMenuItem);
     } else {
         $menu->addChild($menuItem);
         $menuItemManager->createMenuItem($menuItem);
         $menuManager->saveMenu($menu);
     }
 }
Example #2
0
 /**
  * Creates a menu item
  *
  * @param string $name
  * @param array $options
  * @return \Knp\Menu\ItemInterface
  */
 public function createItem($name, array $options = array())
 {
     $item = new MenuItem($name, $this);
     $options = array_merge(array('uri' => null, 'label' => null, 'attributes' => array(), 'linkAttributes' => array(), 'childrenAttributes' => array(), 'labelAttributes' => array(), 'display' => true, 'displayChildren' => true), $options);
     $item->setUri($options['uri'])->setLabel($options['label'])->setAttributes($options['attributes'])->setLinkAttributes($options['linkAttributes'])->setChildrenAttributes($options['childrenAttributes'])->setLabelAttributes($options['labelAttributes'])->setDisplay($options['display'])->setDisplayChildren($options['displayChildren']);
     return $item;
 }
Example #3
0
 /**
  * Delete a menu item
  *
  * @param Entity\Menu $menu
  *
  * @Route(
  *     "/{menu}/{id}",
  *     requirements={ "_method" = "DELETE"}
  * )
  * @Route("/{menu}/{id}/delete", name="zym_menus_item_delete")
  *
  * @Template()
  *
  * @SecureParam(name="menu", permissions="EDIT")
  */
 public function deleteMenuItemAction($menu, Entity\MenuItem $menuItem)
 {
     $menu = $menuItem->getMenu();
     /* @var $menuItemManager Entity\MenuItemManager */
     $menuItemManager = $this->get('zym_menu.menu_item_manager');
     $form = $this->createForm(new Form\DeleteType(), $menuItem);
     $request = $this->get('request');
     if ($request->getMethod() == 'POST') {
         $form->bind($request);
         if ($form->isValid()) {
             $menuItemManager->deleteMenuItem($menuItem);
             return $this->redirect($this->generateUrl('zym_menus_show', array('id' => $menu->getName())));
         }
     }
     if ($request->getMethod() == 'DELETE') {
         $menuItemManager->deleteMenuItem($menuItem);
         return $this->redirect($this->generateUrl('zym_menus_show', array('id' => $menu->getName())));
     }
     return array('menu' => $menu, 'menuItem' => $menuItem, 'form' => $form->createView());
 }