如何在Drupal 7中以编程方式向节点添加表单?

问题描述 投票:3回答:2

我需要在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;
}
php drupal drupal-7 drupal-fapi drupal-forms
2个回答
3
投票

您的代码存在一些问题,需要重新编写...首先,我建议您阅读Form API Quickstart,这是完成工作的一个不错的参考。

我不确定您如何获得$ node对象。您在函数参数中有$ node,并且有$ form作为返回值...

请参见http://drupal.org/node/197122以获取可以嵌入到节点中的表单的示例(我添加了D7部分)。但是这样做是非常糟糕的-您将面对函数重新声明问题,索引问题以及很多麻烦。

我知道这不是一个实际的答案,但我不知道如何用500个字符写出来。


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,
    );
}
© www.soinside.com 2019 - 2024. All rights reserved.