Элементы формы не публикуются в модуле Opencart

#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.

Если у вас есть лучшее решение, пожалуйста, внесите свой вклад!