Ismétlődő value form select-ben

eMeLA képe

Az alábbi select elemet akarom hook_form_alter()-ban hozzáadni egy form-hoz:

<select>
  <option value="1">Volvo</option>
  <option value="2">Saab</option>
  <option value="1">Mercedes</option>
  <option value="1">Audi</option>
</select>

A gond ott van, hogy a FORM API szerinte az '#options' értéke egy tömb. Viszont olyan tömböt nem tudok (tudtommal) létrehozni, ahol több elemnek ugyanaz az indexe.

Leginkább ez a forma közelítette meg a célt, de ennek vannak "hibái":

'#options' => array(array('1' => 'Volvo'), array('2' => 'Saab'), array('1' => 'Mercedes', array('1' => 'Audi')),
 
Ez így néz ki a renderelés után:
 
<select>
<optgroup label="0">
  <option value="1">Volvo</option>
</optgroup>
<optgroup label="1">
   <option value="2">Saab</option>
</optgroup>
<optgroup label="2">
   <option value="1">Mercedes</option>
</optgroup>
<optgroup label="3">
   <option value="1">Audi</option>
</optgroup>
</select>

Ugye itt azzal van a gond, hogy megjelenik a 1-3-ig számozás...

Valakinek van ötlete?
(A nem túl elegáns megoldás, de legvégső esetben egy #markup-ba beleteszem a html forráskódot...)

Drupal verzió: 
szantog képe

tekintve, hogy a form api a keyekkel dolgozik, és nem a valueval. Belehekkelni a form építésébe teljesen felesleges és nem sok jó fog kisülni belőle.
Azonban form_validateben már bármit lehet csinálni az adatokkal, tehát akár form_set_value-val új értéket is adhatsz, ha mondjuk a form_state['values']['ootoomezoeerteke'] > 1.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aruna képe

egy random értéket a value-ba így minden value egyedi lesz, pl. így fog kinézni a form kimeneted:

<select>
  <option value="1_<?php echo rand(); ?>">Volvo</option>
  <option value="2_<?php echo rand(); ?>">Saab</option>
  <option value="1_<?php echo rand(); ?>">Mercedes</option>
  <option value="1_<?php echo rand(); ?>">Audi</option>
</select>

A submit függvényben pedig megszabadulsz a random számoktól egy ciklusban:

// Az aláhúzás előtti részt adja vissza.
$value = strstr($value, '_', TRUE);
0
0