ノード表示ページに選択メニューがあるシンプルなフォームがあります。コールバック関数でフォームを検証する簡単な方法はありますか? 検証とは、値がフォーム配列に実際に存在することを確認するためだけに、高度なことを意味するものではありません。たとえば、ajax を使用せずに、選択メニューに 3 つの項目があり、4 番目の項目を追加してフォームを送信しようとすると、drupal は「不正な選択が行われました。管理者に連絡してください」のようなエラーを返します。
ajax を使用すると、作成したこの 4 番目のアイテムがデータベースに保存されます。だから、次のような検証を書く必要がありますか
if ($select_item > 0 && $select_item <= 3) {
//insert into db
}
または、アイテムが実際にフォーム配列に存在することを確認する簡単な方法はありますか? ajax がないと、フォームが操作された場合、drupal はフォームを送信しないため、あることを願っています。ありがとう。
編集: だから私は基本的に私のコールバック関数でこれが必要ですか?
$form_state = array('storage' => NULL, 'submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
$form = form_get_cache($form_build_id, $form_state);
$args = $form['#parameters'];
$form_id = array_shift($args);
$form_state['post'] = $form['#post'] = $_POST;
$form['#programmed'] = $form['#redirect'] = FALSE;
drupal_process_form($form_id, $form, $form_state);
$_POST['form_build_id'] を取得するために、データ パラメータとして送信しましたが、そうですか? form_get_cache を使用する場所には、データがないように見えます。一種の失われた今。