3

Drupal 7 のノードにプログラム フォームを追加する必要があります。フォームをノードにアタッチするにはどうすればよいですか?

function addtabexample_form($node, &$form_state) {
  $type = node_type_get_type($node);

  $form['title'] = array(
    '#type' => 'textfield', 
    '#title' => check_plain($type->title_label), 
    '#default_value' => !empty($node->title) ? $node->title : '', 
    '#required' => TRUE, 
    '#weight' => -5,
  );

  $form['field1'] = array(
    '#type' => 'textfield', 
    '#title' => t('Custom field'), 
    '#default_value' => $node->field1, 
    '#maxlength' => 127,
 );


  return $form;
}
4

2 に答える 2

6

hook_node_view()を使用して、このコードサンプルに従うことができます

function [YOUR_MODULE]_node_view($node, $view_mode, $langcode)
{
    $my_form = drupal_get_form('addtabexample_form', $node);
    $node->content['my_form_attached'] = array(
        '#markup' => drupal_render($my_form),
        '#weight' => 10,
    );
}
于 2012-07-16T08:03:02.170 に答える
3

あなたのコードには、書き直しが必要な問題がいくつかあります...まず、作業を完了するための適切なソースであるForm API Quickstartを読むことをお勧めします。

$node オブジェクトを取得する方法がわかりません。関数パラメーターに $node があり、戻り値として $form があります...

ノードに埋め込むことができるフォームの例 (D7 部分を追加) については、http://drupal.org/node/197122を参照してください。しかし、それを行うのは非常に悪いことです。関数の再宣言の問題、インデックス作成の問題、および多くの問題に直面することになります。

これが実際の答えではないことはわかっていますが、これを 500 文字で書く方法がわかりません。

于 2012-07-15T22:20:05.253 に答える