2014-09-03 67 views
0

我用這個代碼,以使下拉列表這樣的,支持中選擇父時更新模式類別層次結構與選擇,並禁止模式(PHP,MySQL的)

當前類別下拉菜單(選擇1.1第1類的孩子) enter image description here

public static function dropdown($parent, $child = null) { 
     static $level = 0; 
     static $return = ''; 

     $search = self::all(array('parent' => $parent, 'status' => 1)); 

     foreach ($search as $data) { 
      $level--; 

      $space = ''; 

      for($i = 1; $i < ($level*-1); $i++) $space .= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; 

      if ($child == $data->id) $selected = 'selected'; 
      else $selected = ''; 

      $return .= '<option value="'.$data->id.'" '.$selected.'>'.$space.'- '.$data->name.'</option>'; 

      self::dropdown($data->id, $child); 

      $level++; 
     } 

     return $return; 
    } 

問題:如何禁用1.1類別的所有孩子,他自當我更新1.1類?

目標截圖: enter image description here

+1

我真的不明白你想達到什麼目的,你能澄清一下嗎? – 0x1gene 2014-09-03 09:19:25

+0

我需要像截圖目標一樣的類別下拉菜單。當我更新類別1.1,類別1.1和所有孩子禁用 – user3619463 2014-09-03 09:26:17

回答

0

試試這個:

public static function dropdown($parent, $child = null, $isSelected=false) { 
    static $level = 0; 
    static $return = ''; 

    $search = self::all(array('parent' => $parent, 'status' => 1)); 

    foreach ($search as $data) { 
     $level--; 

     $space = ''; 

     for($i = 1; $i < ($level*-1); $i++) $space .= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; 

     if ($child == $data->id || $isSelected){ 
      $selected = 'selected'; 
      $isSelected = true; 
     }else{ 
      $selected = ''; 
     } 

     $return .= '<option value="'.$data->id.'" '.$selected.'>'.$space.'- '.$data->name.'</option>'; 

     self::dropdown($data->id, $child, $isSelected); 

     $level++; 
    } 

    return $return; 
} 

基本上你要傳輸狀態當前節點的(選擇或沒有),並將其傳遞給他的孩子的。