我正在尝试在我的模块中渲染一个包含表单和链接列表的块。我可以正确地显示一个或另一个,但显然不能很好地理解渲染数组格式,以便在同一个块中同时渲染它们(一个在另一个之上)。使用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']数组,以便可以在一个块中呈现?提前谢谢。
答案 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'));