2017-04-22 205 views
0

您好,我为自定义模块中添加内容制作自定义表单。我为编辑自定义节点制作了另一种形式。我想合并两种形式的一种形式来添加和编辑。在自定义模块Drupal 7中添加/编辑表单?

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); 

} 

这是我的编辑formthis是我的编辑formthis是我的编辑形式 这是我的编辑形式 这是我的编辑形式 这是我的编辑形式

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; 
} 

回答

0

尝试这样的方式,你

传递参数在这两个条件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 
+0

只改变一个设置$ NID值提交通过这样的方式为空'函数example_add_form($ form,&$ form_state,$ nid =''){' –

相关问题