drupal 7 select field выбранное значение не работает в форме рендера

Мне нужно вывести одну друпальную форму с другим контентом. Вот мой код:

$outputs="something else";
$outputs.=render(drupal_get_form(quotes_form));

function quotes_form(){
  $form = array();
      $form['arrival_city_1'] = array(
    '#default_value' => 'Finland',
    '#type' => 'select',
    '#required' => TRUE,
    '#options'=>array(
        'China' => 'China',
        'Finland' => 'Finland',
    ),
    '#weight'=>2,
    '#suffix'=>'</div>',
);
  return $form;
}

Значение "Филанд" должно быть значением по умолчанию. Тем не менее, я проверяю вывод html:

<select id="edit-arrival-city-1" class="form-select required" name="arrival_city_1">
  <option value="China">China</option>
  <option selected="selected" value="Finland">Finland</option>
</select>

В коде выбрано правильное значение, но в поле списка отображается "Китай". Кто-нибудь знает почему? Спасибо

2 ответа

Я пока не знаю, почему, но функция рендеринга вызывает form_select_options, которая, кажется, игнорирует #default_value, но использует #value для установки выбранного параметра. Обычно #value является скорее постоянной настройкой, чем начальной настройкой.

Ниже приведен код использования в случаях флажков. Вы можете легко создать для полей выбора.

$node_schema_type = array('micro_data','json_ld');
foreach($node_schema_type as $key => $value ){
  print $sch_type[$key] = $value;
}

 $form['schema_format'] = array(
    '#type' => 'checkboxes',
    '#options' => drupal_map_assoc(array('micro_data','json_ld')),
    '#default_value' => $sch_type,
    '#title' => t('Add schema type'),
  );

Спасибо!

Другие вопросы по тегам