0

我对 Drupal 完全陌生,请原谅我在我的问题中做出的任何可怕的假设/错误。

我正在尝试向我的侧边栏添加一个数据库驱动的下拉框。我目前正在通过创建一个自定义块来做到这一点(这甚至是正确的方法吗?)。目前,当我什至可以完全渲染块时,它只显示单词“Array”,而不是内容。我已经测试了我的“getGames”函数的输出并且正确地填充了数组。

这是当前代码:

<?php
$games_array = getGames();

return drupal_get_form('gamesForm', $games_array);

function getGames()
{
    $query = "SELECT ID, Name FROM drupGN.Game ORDER BY Name;";
    $results =  db_query($query);

    foreach ($results as $item) {
        $key = $item->ID;
        $value = $item->Name;
        $games_array[$key] = $value;
    }

    return $games_array;
}

function gamesForm($form_state, $games_array)
{
    $form['games'] = array(
        '#type' => 'select',
        '#title' => 'Game Name',
        '#options' => $games_array,
        '#required' => TRUE,
    );

    return $form;
}
?>

就像我说的,数据库连接正常,$games_array 数据已成功填充。只是表单显示似乎无法正常工作。

4

1 回答 1

2

代替

return drupal_get_form('gamesForm', $games_array);

return drupal_render(drupal_get_form('gamesForm', $games_array));

由于您没有提到您的 Drupal 版本,并且您说您在块中看到“Array”,我最好的猜测是您的 Drupal 版本是 7。Drupal 7 表单需要在某处调用 drupal_render(它在页面回调中自动发生但不是块)。这就是为什么你在那里看到“数组”这个词的原因。

仅供参考,这不是正确的方法。您可以轻松编写定义新块及其 block_view 函数的自定义函数。您甚至可以使用模块方法制作页面/块组合。

于 2012-10-01T02:11:50.327 回答