因为项目用到DataTable表格加载后台数据,要连表查询虚拟机选中的策略状态,所以想到先把策略表内容取出来,组成一个''字符串,在遍历虚拟机列表时把他的策略值拼成 'value="1"' 这样的字符串,再利用explode()和implode() 函数,组成新的字符串返回给前台,就实现了选中状态。
<span><span> 1 </span><span>$option</span> = '<select class="sla_list">'<span>; </span><span> 2 </span> <span> 3 </span><span>//</span><span> 取出所有策略</span> <span> 4 </span><span>$sla_query</span> = <span>$this</span>->db->select('sla_id, name')->get('sla'<span>); </span><span> 5</span> <span>$sla_res</span> = <span>$sla_query</span>-><span>result_array(); </span><span> 6</span> <span>if</span> (!<span>empty</span>(<span>$sla_res</span><span>)) { </span><span> 7</span> <span>$option</span> .= '<option value="0">未保护</option>'<span>; </span><span> 8</span> <span>foreach</span> (<span>$sla_res</span> <span>as</span> <span>$k1</span> => <span>$v1</span><span>) { </span><span> 9</span> <span>$option</span> .= '<option value="' . <span>$v1</span>['sla_id'] . '">' . <span>$v1</span>['name'] . '</option>'<span>; </span><span>10</span> <span> } </span><span>11</span> <span>$option</span> .= '</select>'<span>; </span><span>12</span> <span>13</span> } <span>else</span><span> { </span><span>14</span> <span>$option</span> .= '<option value="0">未保护</option></select>'<span>; </span><span>15</span> <span> } </span><span>16</span> <span>17</span> <span>18 </span><span>//</span><span> 选中默认的保护策略</span> <span>19 </span><span>$vm_query</span> = <span>$this</span>->db->select('sla_id')->where('vm_id', <span>$</span>vm_id)->get('task_vm', 1<span>); </span><span>20</span> <span>$vm_res</span> = <span>$vm_query</span>-><span>row_array(); </span><span>21 </span><span>if</span> (<span>is_null</span>(<span>$vm_res</span>['sla_id'])) <span>$res</span>['sla_id'] = 0<span>; </span><span>22 </span><span>$selected</span> = 'value="' . <span>$vm_res</span>['sla_id'] . '"'<span>; </span><span>23 </span><span>$new_str_arr</span> = <span>explode</span>(<span>$selected</span>, <span>$option</span><span>); </span><span>24</span> <span>$new_option</span> = <span>implode</span>(" {<span>$selected</span>} selected", <span>$new_str_arr</span>);</span>