Повторное заполнение полей формы Select в CodeIgniter - PullRequest
2 голосов
/ 09 июля 2010

Я хочу повторно заполнить (т.е. пополнить) значения, отправленные из поля формы выбора после проверки.Я знаю руководство пользователя codeigniter, предложенное с использованием функции set_select (), но их пример из руководства предполагает, что вы жестко запрограммировали (в HTML) массив значений для элемента формы select.В моем случае я использовал помощник по формам, и значения моего поля выбора извлекаются из массива () следующим образом:


$allstates = array('blah','blah2','blah3','blah4','blah5');
echo form_label('Select State Affiliate', 'state'); 
echo form_dropdown('state', $allstates);

Нет необходимости говорить, что массив $ allstates является динамическим и изменяется со временем.Итак, как мне кодировать так, чтобы мое поле выбора могло быть заново заполнено значением, выбранным пользователем?

Ответы [ 2 ]

5 голосов
/ 09 июля 2010

Вы можете установить значение, которое должно быть предварительно выбрано через третий параметр form_dropdown. Значение, выбранное пользователем на предыдущем шаге, находится в $ this-> input-> post ('state'). Таким образом, вы будете использовать:

echo form_dropdown('state', $allstates, $this->input->post('state'));

Из руководства пользователя:

Первый параметр будет содержать имя поля, второй параметр будет содержать ассоциативный массив опций, а третий параметр будет содержать значение, которое вы хотите выбрать

$options = array(
              'small'  => 'Small Shirt',
              'med'    => 'Medium Shirt',
              'large'   => 'Large Shirt',
              'xlarge' => 'Extra Large Shirt',
            );

$shirts_on_sale = array('small', 'large');

echo form_dropdown('shirts', $options, 'large');

// Would produce:

<select name="shirts">
<option value="small">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>
2 голосов
/ 09 июля 2010

Иногда, особенно при работе с объектами, может быть проще сделать это без помощника форм:

<select name="my_select>
    <?php foreach ( $my_object_with_data as $row ): ?>
    <option value="" <?php if ( isset( $current_item->title ) AND $row->title == $current_item->title ) { echo 'selected="selected"';} ?> >
        <?php echo $row->title; ?>
    </option>
    <?php endforeach; ?>
</select>

Я знаю, что очень ужасно, но во многих случаяхэто был самый простой способ сделать это при работе с объектами вместо ассоциативного массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...