3

私はまだ 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 は、私が望むレベルよりも高いレベルにあるようです。それが理にかなっている場合は?

よろしくお願いします。

4

1 に答える 1

6

Try changing

//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;
}

If you look at the example from Drupal's Form API, you'll see that the Options values should be just the string value and not an array.

于 2012-08-06T13:58:30.300 に答える