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;

各ケースは、私にとって個別にうまく機能します。フォームとリストを 1 つの block['content'] 配列に結合して、1 つのブロックでレンダリングできるようにするにはどうすればよいですか? 前もって感謝します。

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 に答える