2017-06-20 4 views
0

Grundsätzlich habe ich Daten, die von MySQL-Abfrage mit dem Stichwort Union alle kamen.Set-Daten für Select2 Kartik Optgroup

$result = []; 
foreach ($listNoEstimate as $k => $v) { 
    $result[$v['id']][] = $v['no_surat'] . ' - ' . $v['level']; 
} 

Das sind die Daten

print_r($data); 


Array 
(
[1904] => Array 
    (
     [0] => C0005 - A 
    ) 

[16] => Array 
    (
     [0] => E1679 - B 
     [1] => E1679 - C 
    ) 
) 

wissen Sie, in select2 wir Daten als Array wie folgt passieren kann:

echo $form->field($model, 'state_1')->widget(Select2::classname(), [ 
    'data' => $data, 
]); 

ich so brauchen:

<select> 
    <optgroup label = 'C0005'> 
     <option value = '1904'> C0005 - A </option> 
    </optgroup> 

    <optgroup label = 'E1679 '> 
     <option value = '16'> E1679 - A </option> 
     <option value = '16'> E1679 - B </option> 
    </optgroup> 
</select> 

Bitte beraten.

Antwort

0

Verwendung php foreach:

echo '<select>' 
foreach($data as $key => $value){ 
    echo '<optgroup label = '.$value.'>' 
    foreach($value as $v){ 

     echo '<option value="'.$key.'">'.$v.'</option>' 

    } 
    echo '</optgroup>' 
} 

echo '</select>' 

ich es nicht getestet haben, hoffen, dass Sie auf die Idee!

0

aktualisieren foreach

foreach ($listNoEstimate as $k => $v) { 
     $result[$v['no_surat']]['id'] = $v['no_surat'] . ' - ' . $v['level']; 
    } 
Verwandte Themen