У меня есть простая форма с меню выбора на странице отображения узла. Есть ли простой способ проверить форму в моей функции обратного вызова? Под валидацией я не имею в виду ничего сложного, просто чтобы убедиться, что значения действительно существуют в массиве форм. Например, без ajax, если в моем меню выбора есть 3 пункта, и я добавляю 4-й пункт и пытаюсь отправить форму, drupal выдаст ошибку, говорящую о чем-то похожем на «сделан неправильный выбор, пожалуйста, свяжитесь с администратором». *
С ajax этот 4-й элемент, который вы создали, будет сохранен в базе данных. Так что я должен написать валидацию, как
if ($select_item > 0 && $select_item <= 3) {
//insert into db
}
Или есть более простой способ проверить, действительно ли элемент существует в массиве форм? Я надеюсь, что так как без ajax, drupal не отправит форму, если ею манипулируют. Спасибо.
EDIT:
Так что мне в основном нужно это в моей функции обратного вызова?
$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, похоже, нет данных. Вид потерянного сейчас.