Drupal 7 - Populate Drop Down从Form API中的DB中选择

时间:2012-08-06 13:02:58

标签: 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'),
            ),
        ),
    );

这会返回一个填充的列表,但会以粗体显示年份ID以及年份(例如2008)。

如何让下拉列表显示年份,而不是以粗体显示年份ID,然后显示年份。似乎$ option只比我想要的高一级?如果这有意义吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:6)

尝试更改

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

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

如果查看Drupal's Form API中的示例,您会看到Options值应该只是字符串值而不是数组。