2012-12-09 46 views
5

मुझे ड्रूपल मॉड्यूल बनाने में समस्या है। मैंने डेटाबेस में जोड़ने के लिए एक फॉर्म बनाया लेकिन मुझे कुछ रिकॉर्ड संपादित करने के लिए फॉर्म बनाने के साथ कोई भाग्य नहीं है, मेरी समस्या है। समस्या यह है कि जब मैं डेटाबेस से फॉर्म लोड में मान लोड करता हूं और उन्हें बदलता हूं और फिर नए मान सबमिट करने से पहले सबमिट करें बटन फॉर्म रीफ्रेश पर क्लिक करें। तो यह डेटाबेस में एक ही चीज़ के रूप में अद्यतन करता है जैसा कि यह था।ड्रूपल मॉड्यूल में फॉर्म संपादित करें?

function edit_form($form, &$form_state) { 

$query = db_select('activity', 'f') 
    ->fields('f') 
    ->condition('IDA', $_GET['edit']); 
$thefile = $query->execute(); 
$title = ""; 
$desc = ""; 
$file = ""; 
$privacy = ""; 
    while($record = $thefile->fetchAssoc()) 
    { 
     $title = $record['title']; 
     $desc = $record['description'];ick submit button form refresh before it submit new values. So it updates into database same thing as it was. Here is a good : 

function edit_form($form, &$form_state) { 

$query = db_select('activity', 'f') ->fields('f') ->co 
     $file = $record['trainingresource']; 
     $privacy = $record['privacy']; 

    } 
    $form['activity'] = array(
    '#type' => 'fieldset', 
    '#title' => t('Create a new activity'), 
    '#tree' => TRUE, 


); 
    $form['activity']['title'] = array(
     '#type' => 'textfield', 
    '#title' => t('Title'), 
    '#description' => t('Please enter the title here.'), 
    '#value' => t($title), 
); 
$form['activity']['description'] = array(
    '#type' => 'textarea', 
    '#title' => t('Enter Description'), 
    '#value' => t($desc), 
    '#description' => t('Please put description here.'), 

); 
/* $form['activity']['date'] = array(
    '#type' => 'date', 
    '#title' => t('Enter activity date'), 

    '#description' => t('Please put activity date in here.'), 
); */ 
    $form['activity']['file'] = array(
    '#type' => 'file', 
    '#title' => t('Submit activity file'), 
'#value' => t($file), 
    '#description' => t('Please files in here.'), 
); 
    $form['activity']['security'] = array(
'#type' => 'radios', 
'#title' => t('Privacy'), 
'#value' => t($privacy), 
'#options' => array('True'=>t('True'),'False'=>t('False')), 
); 
    // Description 

    $form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here'); 
    $form['submit'] = array('#type' => 'submit', '#value' => t('Save')); 
    return $form; 
} 

यहाँ है एक प्रस्तुत प्रपत्र कोड और::

function edit_form_submit($form, $form_state) { 
$idt = $_GET['edit']; 
$title = trim($form_state['values']['activity']['title']); 
$desc = trim($form_state['values']['activity']['description']); 
//$date = trim($form_state['values']['activity']['date']['year']."-".$form_state['values']['activity']['date']['month']."-".$form_state['values']['activity']['date']['day']); 
$file = "file"; 
$privacy = trim($form_state['values']['activity']['security']['#value']); 


$nid = db_update('activity') // Table name no longer needs {} 
->fields(array(
    'title' => $title, 
    'description' => $desc, 
    //'date' => $date, 
    'trainingresource' => $file, 
    'privacy' => $privacy, 

)) 
->condition('IDA', $idt,'=') 
->execute(); 
drupal_set_message($idt); 
drupal_set_message("Added into database"); 
drupal_goto('activity', array('query'=>array(
'activ'=>$_GET['activ'], 
))); 
} 

कोई एक ही समस्या है या कैसे इस समस्या को हल करने के लिए पता है, तो कृपया मेरी मदद यहाँ एक कोड है।

अग्रिम धन्यवाद।

+0

क्या आप कोड संपादित कर सकते हैं, और अतिरिक्त भाग को हटा सकते हैं? जैसा कि D34dman ने बताया, कोड दो बार एक ही फ़ंक्शन को परिभाषित करता है। – kiamlaluno

उत्तर

3

सबसे पहले मैं यह इंगित करना चाहता हूं कि आपका उदाहरण कोड गलत तरीके से चिपकाया गया है। मैं एक ही समारोह संपादन_form की दो घोषणाओं को देखता हूं।

मुझे लगता है कि पहली घोषणा गलत पेस्ट थी और इसका जवाब देना जारी रहा।

आपके फॉर्म घोषणा में मैंने जो मुख्य मुद्दा देखा है वह यह है कि आप डिफ़ॉल्ट मान को स्टोर करने के लिए "#value" का उपयोग कर रहे हैं। कृपया "#default_value" का प्रयोग करें।

यदि आप #value का उपयोग करते हैं, तो यह उपयोगकर्ता द्वारा सबमिट किए गए मानों को अनदेखा करता है।

  1. Read more about use of #value
  2. Read more about use of #default_value

उदाहरण बदलाव के लिए,

$form['activity']['description'] = array(
    '#type' => 'textarea', 
    '#title' => t('Enter Description'), 
    '#value' => t($desc), 
    '#description' => t('Please put description here.'), 
); 

$form['activity']['description'] = array(
    '#type' => 'textarea', 
    '#title' => t('Enter Description'), 
    '#default_value' => t($desc), 
    '#description' => t('Please put description here.'), 
); 

को भी मैं दृढ़ता से आप this link जाँच करने के लिए जो एक मॉड्यूल Drupal के साथ बातचीत करने उदाहरण के बहुत सारे प्रदान करता है की सलाह देते हैं ।

+0

बहुत बहुत धन्यवाद D34dman। लेकिन अब मुझे default_value में समस्या है यह मुझे संदेश देता है: एक अवैध विकल्प का पता चला है। कृपया साइट व्यवस्थापक से संपर्क करें। –

+0

क्या आप AJAX का उपयोग कर रहे हैं? – D34dman

+0

मैंने अपनी समस्या हल की। आपका बहुत बहुत धन्यवाद। –