2015-10-04 28 views
2

我正在使用http://www.bootply.com/nZaxpxfiXz作爲下拉列表。 但我的數據集就像CakePHP無法運行的引導程序下拉列表

array(
    (int) 0 => array(
     'Genre' => array(
      'id' => '1', 
      'name' => 'Alternative Rock', 
      'is_active' => true, 
      'updated' => '2015-10-03 19:19:39', 
      'parent_id' => '24' 
     ) 
    ), 
    (int) 1 => array(
     'Genre' => array(
      'id' => '2', 
      'name' => 'College Rock', 
      'is_active' => true, 
      'updated' => '2015-10-03 19:19:45', 
      'parent_id' => '24' 
     ) 
    ), 
    (int) 2 => array(
     'Genre' => array(
      'id' => '3', 
      'name' => 'Experimental Rock', 
      'is_active' => true, 
      'updated' => '2015-10-03 19:19:50', 
      'parent_id' => '24' 
     ) 
    ), 
    (int) 3 => array(
     'Genre' => array(
      'id' => '4', 
      'name' => 'Goth Rock', 
      'is_active' => true, 
      'updated' => '2015-10-03 19:19:57', 
      'parent_id' => '24' 
     ) 
    ), 
    (int) 4 => array(
     'Genre' => array(
      'id' => '5', 
      'name' => 'Grunge', 
      'is_active' => true, 
      'updated' => '2015-01-29 17:16:15', 
      'parent_id' => null 
     ) 
    ), 
    (int) 5 => array(
     'Genre' => array(
      'id' => '6', 
      'name' => 'Hardcore Punk', 
      'is_active' => true, 
      'updated' => '2015-01-29 17:16:15', 
      'parent_id' => null 
     ) 
    ), 
    (int) 6 => array(
     'Genre' => array(
      'id' => '7', 
      'name' => 'Hard Rock', 
      'is_active' => true, 
      'updated' => '2015-01-29 17:16:15', 
      'parent_id' => null 
     ) 
    ), 
    (int) 7 => array(
     'Genre' => array(
      'id' => '10', 
      'name' => 'Pop', 
      'is_active' => true, 
      'updated' => '2015-10-03 16:38:43', 
      'parent_id' => null 
     ) 
    ), 
    (int) 8 => array(
     'Genre' => array(
      'id' => '24', 
      'name' => 'Rock', 
      'is_active' => true, 
      'updated' => '2015-10-03 19:19:32', 
      'parent_id' => null 
     ) 
    ) 
) 

我想建立一個下拉與類別和子類別列表。 其中有parent_id這些將是一個類別的子類別。

如何使我的php數組適合這個視圖?

<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> 
        <ul class="dropdown-menu"> 
         <li><a href="#">Dropdown Link 1</a></li> 
         <li><a href="#">Dropdown Link 2</a></li> 
         <li><a href="#">Dropdown Link 3</a></li> 
         <li class="divider"></li> 
         <li class="dropdown dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown Link 4</a> 
          <ul class="dropdown-menu"> 
           <li><a href="#">Dropdown Submenu Link 4.1</a></li> 
           <li><a href="#">Dropdown Submenu Link 4.2</a></li> 
           <li><a href="#">Dropdown Submenu Link 4.3</a></li> 
           <li><a href="#">Dropdown Submenu Link 4.4</a></li> 
          </ul> 
         </li> 

        </ul> 
       </li> 

回答

0

這應該這樣做。但是您可能需要重新考慮放置getChildren函數的位置(爲簡單起見,我將它包含在內聯中),您可能需要製作CakePHP視圖助手類,或者甚至在進入視圖之前在控制器中執行該邏輯。

<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> 
    <ul class="dropdown-menu"> 
     <?php foreach ($genres as $genre) : ?> 
      <?php if ($genre['Genre']['parent_id'] == null) : ?> 
       <?php $children = getChildren($genres, $genre['Genre']['id']); ?> 
       <li class="<?php echo empty($children) ? '' : 'dropdown dropdown-submenu'; ?>"> 

        <?php $a_string = 'class="dropdown-toggle" data-toggle="dropdown"'; ?> 
        <a href="#" <?php echo empty($children) ? '' : $a_string; ?>> 
         <?php echo $genre['Genre']['name']; ?> 
        </a> 

        <?php if (!empty($children)) : ?> 
         <ul class="dropdown-menu"> 
          <?php foreach ($children as $child) : ?> 
           <li><a href="#"><?php echo $child['Genre']['name']; ?></a></li> 
          <?php endforeach; ?> 
         </ul> 
        <?php endif; ?> 
       </li> 
      <?php endif; ?> 
     <?php endforeach; ?> 
    </ul> 
</li> 

<?php 
    function getChildren($genres, $parent_id) { 
     $children = array(); 
     foreach ($genres as $genre_inner) { 
      if ($genre_inner['Genre']['parent_id'] == $parent_id) { 
       $children[] = $genre_inner; 
      } 
     } 
     return $children; 
    } 
?> 
+0

我的壞,這條線上的錯誤:<?php $ children = getChildren($ genres,$ genre_inner ['Genre'] ['parent_id']); ?>應該是:<?php $ children = getChildren($ genres,$ genre ['Genre'] ['id']); ?> – George

+0

感謝您接受答案,upvote也會很好(左上方答案旁邊的大箭頭) – George

+0

哈哈,我明白了,不過謝謝:) – George