#php #jquery #post #opencart
#php #jquery #Публикация #opencart
Вопрос:
Я пишу свой собственный модуль, используя для базы фиктивный. Я выполнил большую часть задачи, однако мне нужно передать некоторые дополнительные настройки. По этой причине я добавил 2 новых элемента ввода, как вы можете видеть:
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
<div id="hidset" title="Configure module" style="display:none;">
<table>
<tr><td>Apikey:</td><td><input type="text" name="my_module_apikey" value="5"/></td><tr/>
<tr><td>User ID:</td><td><input type="text" name="my_module_uid" value="6"/></td><tr/>
</table>
</div>
Затем я хотел, чтобы этот div открывался в диалоговом окне. Поэтому я написал эту функцию для этого:
function dialogSettings() {
$( "#hidset" ).dialog({
height: 250,
width: 250,
modal: true,
buttons: { 'OK': function() {
$(this).dialog('close');
}
}
}); }
До сих пор все работает так, как ожидалось.
Теперь, если я решу открыть диалоговое окно — независимо от того, меняю ли я настройки или просто ничего не делаю — нажмите на его кнопку, чтобы закрыть его, и выберите сохранить модуль, эти дополнительные 2 настройки НЕ БУДУТ опубликованы. Если я снова решу отредактировать модуль и на этот раз не открою диалоговое окно, вуаля! настройки публикуются просто отлично с жестко заданными значениями.
Есть идеи о том, что вызывает проблему? Любая помощь будет принята с благодарностью.
Комментарии:
1. Кажется, что метод .dialog портит иерархию DOM, поэтому «волшебным» образом эти поля ввода больше не являются частью формы… Я постараюсь обеспечить это и найти решение
Ответ №1:
Хорошо, я разобрался с проблемой. Это потому, что .dialog перестраивает дерево DOM таким образом, что эти 2 элемента больше не считаются частью формы, поэтому они не публикуются вместе с ней. Возможное решение (может быть, взлом?) — передать значения диалогового поля в скрытых входных данных внутри формы, чтобы они всегда включались в данные POST.
Если у вас есть лучшее решение, пожалуйста, внесите свой вклад!