В моей пользовательской форме (в пользовательском модуле) drupal_add_js () добавляет JS, только когда нет сообщения об ошибке.
My code goes like this:
function ntcf_redo_order_form( &$form_state = array() ) {
global $base_path, $user;
$my_dir = drupal_get_path('module', 'ntcf_redo');
drupal_add_js("$my_dir/order.js", 'module', 'header', FALSE, TRUE, FALSE);
$form = array();
...
return $form;
}
Если функция проверки использовала _form_set_error () _ для отображения сообщения об ошибке и выделения поврежденного поля, сообщение отображается и поле подсвечивается, но вызов _drupal_add_js () _ ничего не делает. Без ожидающего сообщения об ошибке все хорошо.
РЕДАКТИРОВАТЬ: эта проблема не возникает с drupal_set_message()
, только с form_set_error()
.
Я попытался добавить 3 более поздних параметра в вызов * drupal_add_js () *, чтобы он не оптимизировал его (не объединяйте его с другими файлами JS). В HTML не упоминается файл order.js, и не имеет значения, использую ли я последние 4 параметра ('header', FALSE, TRUE, FALSE) или нет.
В Admin / Performance я отключил Оптимизацию файлов Javascript и почти все кеширование, что также не имело никакого значения.
Дополнительные сведения:
Я не уверен, если это что-то меняет, но меня это не удивит, так что вот так:
То, что я делаю здесь, это многочастная форма "мастера", которая позволяет пользователю двигаться вперед и возвращаться назад. Кроме того, на многих страницах используется AJAX, поэтому мне нужно выполнить проверку всех «обязательных» полей в функции _submit вместо того, чтобы позволить Drupal делать это автоматически (поскольку это создает беспорядок в AJAX). Таким образом, если отсутствует поле «обязательное», функция _submit () устанавливает сообщение об ошибке, а функция генерации формы снова генерирует ту же форму (с дополнительным оформлением, полученным из сообщения об ошибке).
Также: это не по теме, но это может помочь кому-то, использующему Google: при создании многостраничной формы, позволяющей перейти назад, вы ДОЛЖНЫ назначить вес каждому элементу в форме, или иначе поля имеют тенденцию «блуждать», когда вы возвращаетесь назад.
Есть идеи?