Drupal 7 - Заполнить выпадающий список из БД в Form API

Я все еще новичок в PHP и даже новичок в Drupal Form API. Я просто пытаюсь заполнить раскрывающийся список из базы данных. Я думаю, что проблема связана с отсутствием у меня глубокого понимания того, как работать с многомерными массивами. Любая помощь искренне приветствуется.

Мой код в настоящее время:

    //Query DB for Rows
    $query = db_select('hp_education_years');
    $query->fields('hp_education_years', array('id', 'years',));
    $query->orderBy('years', 'ASC');
    $results = $query->execute();

    //define rows
    $options = array();
    foreach ($results as $result) {
        $options[$result->id] = array(
            $result->years,
        );
    }
    $form['education']['year'] = array(
        '#type' => 'select',
        '#title' => t('Year'),
        '#options' => $options,
        '#states' => array(
            'visible' => array(
                ':input[name="data_set"]' => array('value' => 'education'),
            ),
        ),
    );

Это вернуло заполненный список, но идентификатор года отображается жирным шрифтом, а также год (например, 2008).

Как я могу получить раскрывающийся список только для отображения года, а не идентификатора года жирным шрифтом, а затем года. Кажется, что $option просто на уровень выше, чем я хочу? если это имеет смысл?

Спасибо заранее.


person Lucas Healy    schedule 06.08.2012    source источник


Ответы (1)


Попробуйте изменить

//define rows
$options = array();
foreach ($results as $result) {
    $options[$result->id] = array(
        $result->years,
    );
}

to

//define rows
$options = array();
foreach ($results as $result) {
    $options[$result->id] = $result->years;
}

Если вы посмотрите на пример из API форм Drupal, вы убедитесь, что значения параметров должны быть просто строковыми значениями, а не массивом.

person nmc    schedule 06.08.2012