오류는 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().