0

設定された「モード」(ajax経由で渡される)に応じてアイテムが表示される動的メニューを作成しています。これをオフにしてメニューを作成し、そのモードに関連付けられていないアイコンを無効にして非表示にします。

問題は、私の実装では多くの if 条件があることです。私が達成しようとしていることを行うためのよりクリーンな方法を誰かに教えてもらえますか?

私のコードは次のとおりです。

public function gridMenu()
  {
    $mode = Validate::sanitize($_POST['mode']);

    $modes = array(
        'products' => array('edit', 'delete', 'archive')
    );

    $output = '<div id="hexContainer">';
    for($i = 1; $i < 7; $i++) {
      $img = '';
      $output .= '<div class="hex hex' . $i;
      if($i == 1)
      {
        if(in_array('edit', $modes[$mode]))
        {
          $output .= ' hex-selectable';
          $img = '<img data-option="Edit" src="' . ROOT . 'images/edit.png">';
        } else {
          $output .= ' hex-disabled';
        }
      }
      if($i == 2)
      {
        if(in_array('zzz', $modes[$mode]))
        {
          $output .= ' hex-selectable';
        } else {
          $output .= ' hex-disabled';
        }
      }
      if($i == 3)
      {
        if(in_array('delete', $modes[$mode]))
        {
          $output .= ' hex-selectable';
          $img = '<img data-option="Delete" src="' . ROOT . 'images/delete.png">';
        } else {
          $output .= ' hex-disabled';
        }
      }
      if($i == 4)
      {
        if(in_array('xxx', $modes[$mode]))
        {
          $output .= ' hex-selectable';
        } else {
          $output .= ' hex-disabled';
        }
      }
      if($i == 5)
      {
        if(in_array('archive', $modes[$mode]))
        {
          $output .= ' hex-selectable';
          $img = '<img data-option="Archive" src="' . ROOT . 'images/archive.png">';
        } else {
          $output .= ' hex-disabled';
        }
      }
      if($i == 6)
      {
        if(in_array('zzz', $modes[$mode]))
        {
          $output .= ' hex-selectable';
        } else {
          $output .= ' hex-disabled';
        }
      }

      $output .= '">';
      $output .= $img;
      $output .= '</div>';
    }
    $output .= '<div class="hex hex-mid"></div>';
    $output .= '</div>';
    echo $output;
  }
4

2 に答える 2