Мой модуль содержит:
<form method="post" name="myform" action="<?php echo JRoute::_('index.php'); ?>">
...
<button type="button">Submit 1</button> <!-- this submits via ajax -->
<button type="submit">Submit 2</button> <!-- this submits NOT via ajax -->
<input type="hidden" value="com_mycomp" name="option">
<input type="hidden" value="rendermod" name="task">
</form>
Эта форма модуля может быть отправлена через Ajax или с помощью обычной кнопки отправки.
Внутри Контроллера моего Компонента я отрисовываю Модуль и выводю его так, чтобы он отображался в Запросе Ajax:
$query = 'SELECT id, title, module, position, content, showtitle, params'
. ' FROM #__modules AS m'
. ' WHERE m.published = 1 AND module = "mod_mymod"';
$db->setQuery($query);
$mod = $db->loadObject();
$module_html = JModuleHelper::renderModule($mod, array('style' => 'html'));
jexit($module_html);
Это все хорошо работало в Joomla 3.8.x.
В Joomla 4 проблема заключается в том, что когда форма отправляется через ajax в первый раз после ее повторной визуализации JS, действие выводится так:
index.php?format=raw
Это было не так в Joomla 3. Поэтому в Joomla 4 я не могу снова отправить форму с помощью кнопки «Отправить 1», потому что весь сайт отображается с format = raw.
Как я могу удалить получение действия формы, выводимого таким образом, при использовании этого, и форма / модуль отрисовывается через ajax?
action="<?php echo JRoute::_('index.php'); ?>"
Задача ещё не решена.
Других решений пока нет …