将表单与其他内容一起呈现到Drupal 7块中

时间:2011-07-20 23:29:47

标签: drupal-7 drupal-modules drupal-render

我正在尝试在我的模块中渲染一个包含表单和链接列表的块。我可以正确地显示一个或另一个,但显然不能很好地理解渲染数组格式,以便在同一个块中同时渲染它们(一个在另一个之上)。使用Drupal 7.4

设置阻止内容以显示列表的示例:

$block['subject']='Title';
$items= // code that generates a list of links into an array
$theme_args=array('items'=>$items,'type'=>'ul');
$block['content']=theme('item_list',$theme_args);
return $block;

设置阻止内容以显示表单的示例:

$block['subject']='Title';
$block['content']=drupal_get_form('mymodule_myform_function'); 
// call function that returns the usual form array  
return $block;

每个案例都适合我。如何将表单和列表组合成一个块['content']数组,以便可以在一个块中呈现?提前谢谢。

1 个答案:

答案 0 :(得分:8)

我认为这应该有效,我还没有测试过:

$block = array(
  'items' = array(
    '#markup' => theme('item_list', $theme_args);
  ),
  'form' = drupal_get_form('mymodule_myform_function');
);
$block['content'] = $block;

这有点违反直觉,drupal_get_form返回表单呈现数组,但theme()返回标记。

你总是可以做到这一点(可怕的解决方案),但不建议它效率极低,并且违反了Drupal打算让你做的所有事情:

$block['content'] = theme('item_list', $theme_args) . render(drupal_get_form('myform'));