2017-04-22 2 views
0

Hallo Ich mache ein benutzerdefiniertes Formular für den Inhalt in benutzerdefinierten Modul hinzufügen. Ich mache ein anderes Formular zum Bearbeiten von benutzerdefinierten Knoten. Ich möchte zwei Formulare in einem Formular zum Hinzufügen und Bearbeiten zusammenführen.Formular in benutzerdefiniertem Modul hinzufügen/bearbeiten 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); 

} 

das ist mein bearbeiten formthis ist meine bearbeiten formthis Form meine bearbeiten ist diese Form meine bearbeiten ist diese Form meine bearbeiten ist das ist meine bearbeiten Form

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

Antwort

0

wie auf diese Weise versuchen, es könnte nützlich sein für Sie

Pass Argument beiden nid im Zustand

// $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 
    } 

} 

auch eine Sache, wenn Sie nid verstecktes Feld erstellen möchten nicht, dann können Sie nid Wert in Form erhalten

$form_state['build_info']['args']; is an array containing at index 0 the value of argument nid 
+0

Nur eine Änderung Satz $ nid Wert auf null standardmäßig 'Funktion direkt über diese Art und Weise einreichen example_add_form ($ form, & $ form_status, $ nid = '') {' –

Verwandte Themen