Рейтинг:0

Я теряю предложения шаблонов, когда вызывается событие ajax

флаг de

Я генерирую предложения тем на основе модуля formdazzle, я сделал свой собственный вариант, потому что мне нужен другой уровень детализации имен тем, и он отлично работает.

Что ж, в хуке alter у меня есть ключ #pre_render и метод для генерации предложений:

Пример

$form['#formdazzle'] = ['form_id' => $form_id];

 // Добавляем нашу функцию пре-рендеринга в конец списка.
 если (!isset($form['#pre_render'])) {
   $form['#pre_render'] = [];
 }
 $form['#pre_render'][] = [self::class, 'preRenderForm'];

Когда форма загружается, предложения работают нормально, теперь у меня есть абзац и кнопка для добавления дополнительных элементов абзаца, когда я нажимаю на нее, по умолчанию выполняется Ajax, и создается новый элемент, но предложения темы не регенерируются, а новый замененная разметка не является правильной (используйте предложения по умолчанию drupal).То есть я теряю всю разметку шаблонов.

введите описание изображения здесь

Делая тесты, я замечаю, что при выполнении ajax-события функция pre_render повторно не выполняется, и поэтому предложения снова не генерируются.

Есть ли способ перезапустить pre_render после события Ajax?

Спасибо.

4uk4 avatar
флаг cn
В обратном вызове Ajax визуализируются и заменяются только динамические части формы. Однако это не должно влиять на formdazzle, потому что это относится и к элементам ввода, и к замененным элементам. Но что находится в обратном вызове #pre_render, не могли бы вы поместить его в другое место?
Alfred Armstrong avatar
флаг cn
Предложенные темы должны быть относительно статичными, они не должны зависеть от динамических свойств, которые меняются в полете. Вы должны генерировать их с помощью hook_X_suggestions_alter, а не с помощью pre_render, если это то, что вы делаете.
chalo avatar
флаг de
@AlfredArmstrong Я понимаю, что вы упоминаете, когда я комментирую, в pre_render делается то, чтобы предоставить дополнительную информацию, чтобы hook_X_suggestions_alter мог добавить дополнительные предложения, в конце концов предложения исходят от этих крючков.
Alfred Armstrong avatar
флаг cn
Да, но предварительный рендеринг не запускается каждый раз, поэтому он не сработает. hook_suggestions_alter должен быть автономным, в идеале получать все необходимое из переданных ему параметров.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.