0

ビュー ブロック (Views 3 / Drupal 7) があり、フィルター フォームが公開されており、ajax モードが有効になっています。それは正常に動作します。hook_form_alter() に検証関数を追加しました。これも機能しますが、form_set_error メッセージはページの更新時にのみ表示されます。ページをリロードせずにメッセージを設定するにはどうすればよいですか?

function hook_form_alter(&$form, &$form_state, $form_id) {
  if($form['#id'] === 'id_from_views') {
   array_unshift($form['#validate'], '_custom_form_validate');
  }
}

function _custom_form_validate($form, &$form_state) {
 if(!empty($form_state['values']['field'])) {
   form_set_error('field', t('Custom error message.'));
  }
}
4

1 に答える 1

0

同様の問題がありました。答えは、hook_form_alter で ajax コールバックを使用することです。

 function hook_form_alter(&$form, &$form_state, $form_id) {
      if($form['#id'] === 'id_from_views') {
       $form['submit']['#ajax'] = array('callback' => '_custom_form_validate');
      }
    }
于 2014-05-23T09:43:41.020 に答える