0

所以 Drupal Forms API 有生成选择框的选项。

但是,该示例包含静态信息。我想以“Drupal”的方式生成一个动态选择列表。

这是代码示例:

   $form['selected'] = array(
   '#type' => 'select',
   '#title' => t('Selected'),
   '#options' => array(
      0 => t('No'),
     1 => t('Yes'),
   ),
   '#default_value' => $category['selected'],
   '#description' => t('Set this to <em>Yes</em> if you would like this category to be selected by default.'),
   );

我希望#options 下的数组变为动态的 - 我是否应该在此之前生成一些东西,将其传递给一个变量并将其放入数组中?我不太确定如何保留此代码的结构,并为动态解决方案插入一种方法。

4

2 回答 2

2

是的,您需要在 $form['selected'] 数组定义之前动态生成选项数组,如下所示:

$myOptionsArray = myOptionsCallback($param1, $param2);
$form['selected'] = array(
    '#type' => 'select',
    '#title' => t('Selected'),
    '#options' => $myOptionsArray,
    '#default_value' => $category['selected'],
    '#description' => t('Set this to <em>Yes</em> if you would like this category to be selected by default.'),
);
于 2013-08-11T22:37:47.380 回答
1

你可以这样做:

'#options' => custom_function_for_options($key)

然后像这样定义 custom_function_for_options() :

function custom_function_for_options($key){
$options = array(
    'Key Value 1' => array(
        'red' => 'Red',
        'green' => 'Green',
        'blue' => 'Blue'
    ),
    'Key Value 2' => array(
        'paris' => 'Paris, France',
        'tokyo' => 'Tokyo, Japan',
        'newyork' => 'New York, US'
    ),
    'Key Value 3' => array(
        'dog' => 'Dog',
        'cat' => 'Cat',
        'bird' => 'Bird'
    ),
);

    return $options;

}

$key 是 $options 返回一组值的基础。

于 2014-03-18T07:47:49.570 回答