2012-07-15 81 views
3

我需要为Drupal 7中的节点添加一个编程式表单。如何将表单附加到节点上?如何以编程方式将表单添加到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; 
} 

回答

3

你的代码有一些问题需要一些重写...... 首先,我建议你阅读Form API Quickstart,这是一个体面的源把工作做好。

我不知道你如何得到$ node对象。您在函数参数中有$ node,$ form作为返回值...

请参阅http://drupal.org/node/197122查看可嵌入节点中的窗体示例 但是这样做是非常糟糕的 - 您将面临函数重新声明问题,索引问题以及大量麻烦。

我知道这不是一个实际的答案,但我不知道如何写在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, 
    ); 
} 

希望这个作品......穆罕默德。

+1

这是一个非常方便的片段。谢谢。 – stefgosselin 2014-07-28 20:51:48

相关问题