Drupal 7 - ошибка «недопустимого выбора» для поля выбора ajaxed (не используется Drupal FAPI #ajax) - PullRequest
1 голос
/ 21 января 2012

Попытка выяснить, как решить проблему «обнаружен незаконный выбор» при использовании ajax-методов не FAPI для замены списка выбора.

Пример в форме создания узла, естьссылка под списком выбора, чтобы открыть пользовательскую форму в модальном окне ctools для добавления нового значения, а при успешной отправке формы в модальном режиме выбор формы узла заменяется новыми значениями.

  <?php
  if (!empty($form_state['executed'])) {
    // Replace node form select if form submit was successful.
    module_load_include('inc', 'node', 'node.pages');
    $node_form = node_add('photo');
    $new_field = drupal_render($node_form[$field]);
    $output = array();
    $output[] = ajax_command_replace($selector, $new_field);
    $output[] = ctools_modal_command_dismiss();
  }
  print ajax_render($output);

Я могу заставить его работать до тех пор, пока не отправлю исходную форму узла, где я получаю ошибку «незаконного выбора», предположительно потому, что форма узла использует для проверки кэшированные значения формы.Setting $ form_state ['rebuild'] = TRUE;исправляет ошибку неправильного выбора, но тогда поле изображения в форме узла не работает должным образом.Файл изображения загружается и сохраняется на узле, но теги thumbnail, alt и title не включаются).Dblog получает эту ошибку, потому что он пытается отправить данные в старый идентификатор формы (предварительная перестройка).

location: file/ajax/field_image/und/0/form-DSbMdFlKNDaAJSFY4fVIHkcg2eMCDqYZHUfitCnR0VA
message: Invalid form POST data.

Есть ли лучший способ заменить список выбора, чтобы избежать ошибки «недопустимого выбора», или следуетЯ проверяю, есть ли ошибка файлового модуля с $ form_state ['rebuild']?Я не смог найти документацию о том, как вызвать событие $ form #ajax из другой формы, в качестве возможной альтернативы.Не уверен, что это вообще возможно.Любое руководство будет оценено.

1 Ответ

1 голос
/ 28 апреля 2013

В поле выбора формы узла добавьте '#validated' => TRUE.Вам придется изменить форму узла в пользовательском модуле:

mymodule_form_photo_node_form_alter (& $form, & $state)
{
  // Replace 'field_name' with whatever the name of the select field is
  $form['field_name']['#validated'] = TRUE;
}

Я вижу, что этот вопрос задавался более года назад, но, надеюсь, это поможет кому-то еще искать ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...