Exemplo n.º 1
0
 /**
  * Resolve the menu and return the items.
  *
  * @param  array $items
  * @return array
  */
 protected function resolveMenu($items, $parentId = null)
 {
     $menu = [];
     foreach ($items as $key => $value) {
         $key = $this->parseConfig($key);
         $value = $this->parseConfig($value);
         // key   = title
         // value = relative page path
         if (is_string($key) and is_string($value)) {
             $item = ['name' => $key, 'href' => $this->resolveLink($value)];
         } elseif (is_string($key) and $key === 'children' and is_array($value)) {
             $item = $this->resolveMenu($value);
         } elseif (isset($value['name'])) {
             $item = ['name' => $value['name']];
             // resolve href
             if (isset($value['href'])) {
                 $item['href'] = $this->resolveLink($value['href']);
             } elseif (isset($value['page'])) {
                 $item['href'] = $this->resolveLink($value['page']);
             }
         }
         if (isset($item)) {
             // generate id
             $id = md5($item['name'] . (isset($item['href']) ? $item['href'] : ''));
             $item['id'] = $id;
             // parent id
             if (!is_null($parentId)) {
                 $item['parent_id'] = $parentId;
             }
             // icon
             if (isset($value['icon'])) {
                 $item['icon'] = $value['icon'];
             }
             // children
             if (isset($value['children']) and is_array($value['children'])) {
                 $item['children'] = $this->resolveMenu($value['children'], $id);
             }
             $this->flatMenu[] = Arr::except($item, ['children']);
             $menu[] = $item;
         }
     }
     return $menu;
 }
Exemplo n.º 2
0
 public function testRemoveValue()
 {
     // numeric array
     $a = ['foo', 'bar', 'baz'];
     $this->assertCount(2, Arr::removeValue($a, 'bar'));
     $this->assertNotContains('bar', Arr::removeValue($a, 'bar'));
     $this->assertContains('foo', Arr::removeValue($a, 'bar'));
     $this->assertContains('baz', Arr::removeValue($a, 'bar'));
     // associative array
     $a = ['foo' => 'bar', 'faz' => 'ter', 'one' => 'two'];
     $this->assertCount(2, Arr::removeValue($a, 'bar'));
     $this->assertNotContains('bar', array_values(Arr::removeValue($a, 'bar')));
     $this->assertContains('ter', array_values(Arr::removeValue($a, 'bar')));
     $this->assertContains('two', array_values(Arr::removeValue($a, 'bar')));
 }