Блок выбора формы (выпадающий) в базе данных на Drupal

Я совершенно новичок в 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 успешно заполнены. Это просто отображение формы, которое, кажется, не работает.

1 ответ

Решение

Замещать

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. и вы даже можете сделать комбо страницы / блока с модульным подходом.

Другие вопросы по тегам