このエラーは、form_token
ニーズが無効であり、再生成する必要があることを意味します。これは基本的に非表示のフォームフィールドです(通常、クロスサイト偽造から保護するために使用されます)。
通常、トークン要素はによって各Drupalフォームに自動的に追加される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()
。