Блок выбора формы (выпадающий) в базе данных на 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. и вы даже можете сделать комбо страницы / блока с модульным подходом.