你好,我为自定义模块中的添加内容制作自定义表单。我为编辑自定义节点做了另一种表格。我想以一种形式合并两种形式进行添加和编辑。
function example_add_form($form, &$form_state) {
$form['name']['title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#required' => TRUE,
);
$form['name']['description'] = array(
'#type' => 'textarea',
'#title' => t('Description'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Create Order',
);
return $form;
}
function example_add_form_submit($form, &$form_state) {
$node = new stdClass();
node_object_prepare($node);
$node->language = LANGUAGE_NONE;
$node->title = $form_state['values']['title'];
$node->body[LANGUAGE_NONE][0]['value'] = $form_state['values']['description'];
node_save($node);
}
这是我的编辑形式,这是我的编辑形式,这是我的编辑表格这是我的编辑表格这是我的编辑表格这是我的编辑表格
function example_edit_form($form, &$form_state, $nid) {
global $node;
$node = node_load($nid);
$form['title'] = array(
'#title' => 'Title',
'#type' => 'textfield',
'#default_value' => $node->title,
);
$form['name']['description'] = array(
'#type' => 'textarea',
'#title' => t('Description'),
'#default_value' => $node->body[LANGUAGE_NONE][0]['value'],
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Update Order',
);
return $form;
}
尝试以这种方式尝试,它可能对您有用
通过两个条件的参数nid
// $nid = ''; //by default NULL
// $nid = YOUR_NODE_ID; pass nid when you edit the node
function example_add_form($form, &$form_state, $nid) {
global $node;
if(!empty($nid)){
$node = node_load($nid);
$body = $node->body[LANGUAGE_NONE][0]['value'];
}
// Create Hidden field
$form['nid'] = array(
'#type' => 'hidden',
'#value' => $nid, // pass node id in form data
);
$form['name']['title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#required' => TRUE,
'#default_value' => isset($node->title) ? $node->title : NULL;
);
$form['name']['description'] = array(
'#type' => 'textarea',
'#title' => t('Description'),
'#default_value' => isset($body) ? $body : NULL;
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Create Order',
);
return $form;
}
function example_add_form_submit($form, &$form_state) {
// check if nid value is empty then create a node otherwise update it
if(empty($form_state['values']['nid']){
$node = new stdClass();
node_object_prepare($node);
$node->language = LANGUAGE_NONE;
$node->title = $form_state['values']['title'];
$node->body[LANGUAGE_NONE][0]['value'] = $form_state['values']['description'];
node_save($node);
}else{
// update node data
}
}
也一件事,如果您不想创建NID隐藏字段,则可以在表单中直接通过此方式提交nid值
$form_state['build_info']['args']; is an array containing at index 0 the value of argument nid