2.0.4.1 Study addDropdown (ok)

C:\xampp82\htdocs\testvn\app\MenuBuilder\MenuBuilder.php

<?php
namespace App\MenuBuilder;
class MenuBuilder
{
  private $menu = [];
  private $dropdownDeep = 0;
  private $dropdown = false;
  private function addRegularLink($id, $name, $slug, $icon, $iconType, $sequence = 0)
  {
    $hasIcon = ($icon === false || strlen($icon) === 0) ? false : true;
    if ($hasIcon) {
      array_push($this->menu, [
        'id' => $id,
        'target' => 'link',
        'name' => $name,
        'slug' => $slug,
        'hasIcon' => $hasIcon,
        'iconType' => $iconType,
        'sequence' => $sequence
      ]);
    } else {
      array_push($this->menu, [
        'id' => $id,
        'target' => 'link',
        'name' => $name,
        'slug' => $slug,
        'iconType' => $iconType,
        'sequence' => $sequence
      ]);
    }
  }
  public function addLink($id, $name, $slug, $icon = false, $iconType = 'coreui', $sequence = 0)
  {
    if ($this->dropdown === true) {
      $this->addDropdownLink($id, $name, $slug, $icon, $iconType, $sequence);
    } else {
      $this->addRegularLink($id, $name, $slug, $icon, $iconType, $sequence);
    }
  }
  public function addTitle($id, $name, $icon = false, $iconType = 'coreui', $sequence = 0)
  {
    $hasIcon = ($icon === false || strlen($icon) === 0) ? false : true;
    if ($hasIcon) {
      array_push($this->menu, [
        'id' => $id,
        'target' => 'title',
        'name' => $name,
        'hasIcon' => $hasIcon,
        'iconType' => $iconType,
        'sequence' => $sequence
      ]);
    } else {
      array_push($this->menu, [
        'id' => $id,
        'target' => 'title',
        'name' => $name,
        'iconType' => $iconType,
        'sequence' => $sequence
      ]);
    }
  }
  private function innerAddElementToMenuLastPosition(&$menu, $element, $offset)
  {
    // $menu = array (
    //   0 => 
    //   array (
    //     'id' => 1,
    //     'slug' => 'link',
    //     'name' => 'Dashboard',
    //     'href' => '/',
    //     'hasIcon' => true,
    //     'icon' => 'cil-speedometer',
    //     'iconType' => 'coreui',
    //     'sequence' => 1,
    //   ),
    //   1 => 
    //   array (
    //     'id' => 2,
    //     'slug' => 'dropdown',
    //     'name' => 'Settings',
    //     'hasIcon' => true,
    //     'icon' => 'cil-calculator',
    //     'iconType' => 'coreui',
    //     'elements' => 
    //     array (
    //       0 => 
    //       array (
    //         'id' => 3,
    //         'slug' => 'link',
    //         'name' => 'Notes',
    //         'href' => '/notes',
    //         'hasIcon' => false,
    //         'sequence' => 3,
    //       ),
    //       1 => 
    //       array (
    //         'id' => 4,
    //         'slug' => 'link',
    //         'name' => 'Users',
    //         'href' => '/users',
    //         'hasIcon' => false,
    //         'sequence' => 4,
    //       ),
    //       2 => 
    //       array (
    //         'id' => 5,
    //         'slug' => 'link',
    //         'name' => 'Edit menu',
    //         'href' => '/menu/menu',
    //         'hasIcon' => false,
    //         'sequence' => 5,
    //       ),
    //       3 => 
    //       array (
    //         'id' => 6,
    //         'slug' => 'link',
    //         'name' => 'Edit menu elements',
    //         'href' => '/menu/element',
    //         'hasIcon' => false,
    //         'sequence' => 6,
    //       ),
    //     ),
    //     'sequence' => 2,
    //   ),
    // );
    $z = 1;
    $result = false;
    $menu = &$menu[count($menu) - 1];
    while (is_array($menu)) {
      if ($z === $this->dropdownDeep  - $offset) {
        array_push($menu['elements'], $element);
        $result = true;
        break;
      }
      $menu = &$menu['elements'][count($menu['elements']) - 1];
      $z++;
    }
  }
  private function addElementToMenuLastPosition($element, $offset = 0)
  {
    return $this->innerAddElementToMenuLastPosition($this->menu, $element, $offset);
  }
  private function addDropdownLink($id, $name, $slug, $icon, $iconType, $sequence = 0)
  {
    $hasIcon = ($icon === false) ? false : true;
    if ($hasIcon) {
      $this->addElementToMenuLastPosition(array(
        'id' => $id,
        'target' => 'link',
        'name' => $name,
        'slug' => $slug,
        'hasIcon' => $hasIcon,
        'icon' => $icon,
        'iconType' => $iconType,
        'sequence' => $sequence,
      ));
    } else {
      $this->addElementToMenuLastPosition(array(
        'id' => $id,
        'target' => 'link',
        'name' => $name,
        'slug' => $slug,
        'hasIcon' => $hasIcon,
        'sequence' => $sequence,
      ));
    }
  }
  public function getResult()
  {
    return $this->menu;
  }
}

Study 1.

C:\xampp82\htdocs\testvn\app\MenuBuilder\MenuBuilder.php

Kết quả:

Last updated

Was this helpful?