0

私は 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_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 であると推測されます。ブロックではありません)。そのため、そこに「配列」という単語が表示されています。

これは正しいアプローチではありません。新しいブロックとその block_view 関数を定義するカスタム関数を簡単に作成できます。また、モジュール アプローチを使用してページ/ブロック コンボを作成することもできます。

于 2012-10-01T02:11:50.327 に答える