значение массива, которое будет ключом в элементе выбора формы zend

#arrays #zend-form #zend-form-element

#массивы #zend-форма #zend-form-element

Вопрос:

У меня есть форма zend, и в этой форме у меня есть поле выбора, которое я создаю следующим образом:

 $e = new Zend_Form_Element_Select('user_status');
$e->setLabel('Status');
$e->addMultiOptions(Model_User::$STATUS);
$e->setRequired(false);
$this->addElement($e);
  

Массив Model_User::$STATUS выглядит следующим образом:

 public static $STATUS = array(
    1   =>  'creating user',
    2   =>  'creating book',
    3   =>  'book created',
    4   =>  'book send'
);
  

Вывод выглядит следующим образом:

 <select name="user_status" id="user_status">
   <option value="0" label="creating user">creating user</option>
   <option value="1" label="creating book" selected="selected">creating book</option>
   <option value="2" label="book created">book created</option>
   <option value="3" label="book send">book send</option>
</select>
  

Теперь я хочу, чтобы результат был таким:

 <select name="user_status" id="user_status">
   <option value="creating user" label="creating user">creating user</option>
   <option value="creating book" label="creating book" selected="selected">creating book</option>
   <option value="book created" label="book created">book created</option>
   <option value="book send" label="book send">book send</option>
</select>
  

Короче говоря:
Я хочу, чтобы значение массива было ключом в форме zend. Как мне добиться этого без изменения ключей массива статуса.

Ответ №1:

Просто предварительно обработайте Model_User::$STATUS var.

 $statuses = array();
foreach (Model_User::$STATUS as $status) {
    $statuses[$status] = $status;
}
  

И затем установите multipoptions

 $e->addMultiOptions($statuses);