त्रुटि का अर्थ है कि form_token
आवश्यकताएं अमान्य हैं और उन्हें पुनर्जीवित करने की आवश्यकता है। यह मूल रूप से एक छिपा हुआ रूप क्षेत्र है (आमतौर पर क्रॉस-साइट फोरजीज़ के खिलाफ सुरक्षा के लिए उपयोग किया जाता है)।
आम तौर पर एक टोकन तत्व स्वचालित रूप से प्रत्येक ड्रुपल फॉर्म में जुड़ जाता है drupal_prepare_form()
, इसलिए आपको आम तौर पर एक स्वयं को जोड़ना नहीं पड़ता है, जब तक कि आप अपना कोड नहीं लिख रहे हों।
यदि आप कुछ बहु-पृष्ठ फ़ॉर्म को प्रोग्राम करने की कोशिश कर रहे हैं, तो आपको संभवतः प्रत्येक सबमिट का उपयोग करके पुनः टोकन उत्पन्न करने की आवश्यकता है drupal_get_token()
, जैसे कि यहाँ दिखाया गया है :
$form_state['input']['form_token'] = drupal_get_token($form['#token']);
Form_alter में फॉर्म टोकन के पुनर्जनन को मजबूर करने के लिए वर्कअराउंड के लिए, निम्न उदाहरण देखें:
/**
* Implements hook_form_alter().
*/
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id === 'your_form_entityform_edit_form' && !empty($form_state['input']['form_id'])) {
$form_id = $form_state['input']['form_id'];
$form ['#token'] = $form_id;
$form ['form_token'] = array(
'#id' => drupal_html_id('edit-' . $form_id . '-form-token'),
'#type' => 'token',
'#default_value' => drupal_get_token($form['#token']),
'#parents' => array('form_token'),
);
}
}
समस्या निवारण
यदि आपका फॉर्म हार्डकोड नहीं है, तो दोबारा जांचें, अन्यथा @thirdender द्वारा सुझाए गए टोकन जोड़ें :
<input name='form_token' type='hidden' value='<?php print drupal_get_token('MY_FORM_ID'); ?>'>
जांचें कि क्या त्रुटि आपके फॉर्म में होती है, क्योंकि यह अन्य फॉर्म (जैसे फॉर्म के भीतर फॉर्म) पर हो सकती है।
- डिबग
drupal_valid_token()
।