我需要在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;
}
答案 0 :(得分: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 :(得分:3)
您的代码存在一些需要重写的问题... 首先,我建议阅读Form API Quickstart,这是完成工作的一个不错的来源。
我不确定你是如何得到$ node对象的。你在函数参数中有$ node,$ form作为返回值...
有关可以嵌入节点的表单的示例(我添加了D7部分),请参阅http://drupal.org/node/197122。 但这样做非常糟糕 - 你将面临功能重新安排问题,索引问题和许多麻烦。
我知道这不是一个真正的答案,但我不知道怎么用500个字符来写这个。