2015-10-04 4 views
2

Я использую http://www.bootply.com/nZaxpxfiXz для выпадающего списка. Но мой набор данных, какBootstrap выпадающий список 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

мой плохой, ошибка на этой строке: должно быть: George

+0

Спасибо, что приняли ответ, тоже будет неплохо вверх (большой стрелок вверх рядом с ответом в левом верхнем углу) – George

+0

ха-ха, я вижу, но спасибо в любом случае :) – George

Смежные вопросы