2

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

4

1 回答 1

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'));
于 2011-07-22T16:19:35.033 回答