因為項目用到DataTable表格載入後臺數據,要連表查詢虛擬機選中的策略狀態,所以想到先把策略表內容取出來,組成一個'<select><option value="1"></option>[n個option]</select>'字元串,在遍歷虛擬機列表時把他的策略值拼成 'value="1"' 這 ...
因為項目用到DataTable表格載入後臺數據,要連表查詢虛擬機選中的策略狀態,所以想到先把策略表內容取出來,組成一個'<select><option value="1"></option>[n個option]</select>'字元串,在遍歷虛擬機列表時把他的策略值拼成 'value="1"' 這樣的字元串,再利用explode()和implode() 函數,組成新的字元串返回給前臺,就實現了選中狀態。
1 $option = '<select class="sla_list">';
2
3 // 取出所有策略
4 $sla_query = $this->db->select('sla_id, name')->get('sla');
5 $sla_res = $sla_query->result_array();
6 if (!empty($sla_res)) {
7 $option .= '<option value="0">未保護</option>';
8 foreach ($sla_res as $k1 => $v1) {
9 $option .= '<option value="' . $v1['sla_id'] . '">' . $v1['name'] . '</option>';
10 }
11 $option .= '</select>';
12
13 } else {
14 $option .= '<option value="0">未保護</option></select>';
15 }
16
17
18 // 選中預設的保護策略
19 $vm_query = $this->db->select('sla_id')->where('vm_id', $vm_id)->get('task_vm', 1);
20 $vm_res = $vm_query->row_array();
21 if (is_null($vm_res['sla_id'])) $res['sla_id'] = 0;
22 $selected = 'value="' . $vm_res['sla_id'] . '"';
23 $new_str_arr = explode($selected, $option);
24 $new_option = implode(" {$selected} selected", $new_str_arr);