Drupal中数据库驱动的选择表单(下拉)块

Drupal中数据库驱动的选择表单(下拉)块,drupal,drupal-forms,Drupal,Drupal Forms,我对Drupal完全陌生,请原谅我在问题中做出的任何可怕的假设/谎言 我正在尝试将数据库驱动的下拉框添加到侧边栏。我目前正在创建一个自定义块(这是正确的方法吗?)。目前,当我甚至可以得到块渲染,它只是显示单词“数组”,而不是内容。我已经测试了“getGames”函数的输出,数组填充正确 以下是当前代码: <?php $games_array = getGames(); return drupal_get_form('gamesForm', $games_array); function

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

我正在尝试将数据库驱动的下拉框添加到侧边栏。我目前正在创建一个自定义块(这是正确的方法吗?)。目前,当我甚至可以得到块渲染,它只是显示单词“数组”,而不是内容。我已经测试了“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\u数组数据已成功填充。只是表单显示似乎不起作用。

替换

return drupal_get_form('gamesForm', $games_array);

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


这不是供参考的正确方法。您可以轻松编写自定义函数来定义新块及其块视图函数。您甚至可以使用模块方法创建页面/块组合

谢谢,这正是我需要的。我认为我的方法是无效的,自定义块编辑器只是我第一次看到我可以使用自定义代码的地方,所以我把它放在那里。我在哪里定义自定义函数(是的,我使用的是Drupal7)?我仍然不确定将自定义代码与内置内容创建工具集成的最佳方法是什么。欢迎:)无论如何,不要忘记在与Drupal实习生相关的帖子中添加Drupal版本。祝你好运
return drupal_render(drupal_get_form('gamesForm', $games_array));