Hata, form_token
ihtiyaçların geçersiz olduğu ve yeniden oluşturulması gerektiği anlamına gelir . Bu temelde gizli bir form alanıdır (genellikle siteler arası sahteciliğe karşı koruma için kullanılır).
Normalde, her Drupal formuna tarafından bir token öğesi otomatik olarak eklenir drupal_prepare_form()
, bu nedenle kendi kodunuzu yazmadığınız sürece genellikle kendiniz eklemek zorunda kalmazsınız.
Çok sayfalı bir form programlamaya çalışıyorsanız, büyük olasılıkla her bir gönderide jetonu drupal_get_token()
, örneğin burada gösterildiği gibi kullanarak yeniden oluşturmanız gerekir :
$form_state['input']['form_token'] = drupal_get_token($form['#token']);
Form_alter'da form belirtecinin yeniden oluşturulmasını zorunlu kılmak için aşağıdaki örneği inceleyin:
/**
* 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'),
);
}
}
Sorun giderme
Formunuzun sabit kodlanıp kodlanmadığını iki kez kontrol edin, aksi takdirde jetonu @ üçüncü tarafından önerilen şekilde ekleyin :
<input name='form_token' type='hidden' value='<?php print drupal_get_token('MY_FORM_ID'); ?>'>
Hatanın başka bir formda olabileceği gibi formunuzda olup olmadığını kontrol edin (örn. Form içindeki form).
- Hata ayıkla
drupal_valid_token()
.