<FORM> внутри <FORM> как организовать в компоненте?

  • 32 Ответов
  • 723 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

ghostcom

  • ***
  • 54
  • 0
   Известно что  <FORM> внутри <FORM> не поддерживается! Но как же быть?
   Есть компонент  со стандартной джумловской сортировкой пунктов (фронтенд) которая реализуется только в тегах <form>. Точней список товаров с различным кол-ом цен от 1 до 5 (без всяких карточек товаров). Цены добавляются в корзину AJAXом тоже в теге <form>
Код: php


<form id="adminForm" method="post" name="adminForm">
                     
                      <h3><?php echo $item->title; ?></h3>

                      <div class="panel_pl">

                        <?php if ($item->price_1 > 0): ?>
                        <div class="box">
                          <form method="post" action="" class="cart">
                              <div><?php echo $params->get('price_title_1'); ?></div>
                              <fieldset>
                                 <input type="hidden" name="cartToken" value="<?php echo $session->get('cartToken');?>" />
                                 <input type="hidden" name="my-item-id" value="<?php echo $item->id; ?>" />
                                 <input type="hidden" name="my-item-name" value="<?php echo $item->title; ?> - <?php echo $params->get('price_title_1'); ?>" />
                                 <input type="hidden" name="my-item-price" value="<?php echo $item->price_1; ?>" />
                                 <input type="hidden" name="my-item-qty" value="1" size="1" />
                                 <input type="submit" name="my-add-button" value="<?php echo $currencySymbol ?><?php echo $item->price_1; ?>" class="button" />
                              </fieldset>
                           </form>
                        </div>
                        <?php endif; ?>

                        <?php if ($item->price_2 > 0): ?>
                        <div class="box">
                           <form method="post" action="" class="cart">
                              <div><?php echo $params->get('price_title_2'); ?></div>
                              <fieldset>
                                 <input type="hidden" name="cartToken" value="<?php echo $session->get('cartToken');?>" />
                                 <input type="hidden" name="my-item-id" value="<?php echo $item->id; ?>" />
                                 <input type="hidden" name="my-item-name" value="<?php echo $item->title; ?> - <?php echo $params->get('price_title_2'); ?>" />
                                 <input type="hidden" name="my-item-price" value="<?php echo $item->price_2; ?>" />
                                 <input type="hidden" name="my-item-qty" value="1" size="1" />
                                 <input type="submit" name="my-add-button" value="<?php echo $currencySymbol ?><?php echo $item->price_2; ?>" class="button" />
                              </fieldset>
                           </form>

                        <?php  // ..... и т.д.
                        ?>

                      </div>
</form>


Может кто реализовывал такое. Будут полезны любые подсказки.

*

ghostcom

  • ***
  • 54
  • 0
Возможно ли реализовать внутреннюю форму в контроллере?

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
Не совсем понял, что вы хотите и почему формы не работают.
RSForm их использует и я практикую там же.
Кем известно то? ^-^

Например их код из контроллера:
      $form = JRequest::getVar('form');
      $formId = (int) @$form['formId'];

И дивы "ловим".

А то что <form> видоизменили-логика не меняется, насколько я понимаю.

Если аяксом, то можно поймать:

Код
<script> 
        $(document).ready(function() {
            $('#myForm').ajaxForm(function() {
                alert("Мы поймали AJAX форму!");
            });
        });
</script>
« Последнее редактирование: 08.05.2016, 20:05:20 от vipiusss »
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
при данной реализации в первом блоке class="box" на странице не выводится тег form! И форма не работает AJAX. Во втором блоке все нормально и работает. Вроде как браузеры не обробатывают правильно такое, нет?

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
Вы скажите, что вам надо отсортировать?
<fieldset> ?

http://ruseller.com/lessons/les756/demo/demo_3.html
пример с кодом, это вы хотите? просто я не понял в шапке темы.
и всё прекрасно с формами работает.и на аяксе, как вы хотите.
и разжёвывание в коде на русском(навсяк)
« Последнее редактирование: 08.05.2016, 20:22:41 от vipiusss »
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
Вы имеете в виду зачем здесь <fieldset> - в принципе не зачем) это черновик

А ссылочка очень интересная сейчас буду изучать.

*

ghostcom

  • ***
  • 54
  • 0
Проблема не решается. Сортировка у меня работает. Трабл в том что внутренняя форма некорректно (почемуто) работает внутри родительской формы.

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
форма в форме?
это как?
сделайте не форму в форме, а class в id формы,id будет главным для формы, а внутренняя классы иметь будут.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
Голова уже кводратная)) отвечаю на вопрос

Вы скажите, что вам надо отсортировать?
<fieldset> ?

Выводится список foreach из базы и его я сортирую, а это как бы одна запись. просто скопировал только нужный кусок. Сортирую не <fieldset>)))

*

ghostcom

  • ***
  • 54
  • 0
форма в форме?
это как?
сделайте не форму в форме, а class в id формы,id будет главным для формы, а внутренняя классы иметь будут.


а можно поподробней, я совсем не профи

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
http://php5.kiev.ua/manual/ru/control-structures.foreach.html
ваши массивы.
насколько я понял массивы через фореч.

хотя вы бы цель простыми словами написали бы и фореч не нужен.
списки выводить и фильтровать можно многими вариантами, я даже дал ссылку как.

///

если знающие фореч и понимающиее, что за список и куда и зачем ещё форма-отпишуться.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

robert

  • ********
  • 4002
  • 371
Что за ерунда? Раз уже
   Известно что  <FORM> внутри <FORM> не поддерживается!
, то нужно сделать так, чтобы такого не было, а не продолжать дальше и удивляться
внутренняя форма некорректно (почемуто) работает внутри родительской формы.
Какой компонент? Что именно нужно сделать (только не надо: чтобы форма работала внутри формы)? Дайте больше конкретной информации, а не только кусок шаблона.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

ghostcom

  • ***
  • 54
  • 0
Т.к. я не силен в кодинге, меня легко ввести в заблуждение
Не совсем понял, что вы хотите и почему формы не работают.
RSForm их использует и я практикую там же.
Кем известно то? ^-^

---------------

Какой компонент? Что именно нужно сделать (только не надо: чтобы форма работала внутри формы)? Дайте больше конкретной информации, а не только кусок шаблона.

Компонент самописный в кратце описан в первом посте. Даже если без кусков шаблона. Если столкнулись с такой проблемой как обыграт в Joomla. Вынести за пределы не могу. Поэтому и задал вопрос.

Пытаюсь сделать запрос в модель по ссылке, где будет внутренняя форма. Пока безрезультатно(. С моими знаниями и перебором всего что пишут в интернете уйдет не одна неделя. Даже не знаю возможно такое реализовать. Поэтому и задал такой вопрос здесь. Это ведь форум Joomla.

*

robert

  • ********
  • 4002
  • 371
ОК, я уже понял, что задавать вопросы вы не умеете. Тогда ничем не могу помочь.
Единственное, что могу сказать: HTML не разрешает иметь форму внутри формы, если хотите одновременно отправить несколько форм - используйте JavaScript. Как конкретно - не могу сказать, пока не получу конкретный вопрос.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
+1 к "форма в форме"
тоже не понял, что не раз в теме писал и перечислил несколько вариантов, возможно это правильный ответ, наблюдая за ответами.
ТС просил я вас-задайте вопрос, напишите цель просто как вы её видите, без участков кода, обычными словами.

Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
Я уже не знаю куда конкретней задавать вопрос. Хотел побыстрому получить, ответ только время потерял За помощь спасибо! Буду капать в сторону JavaScript. Может позже соберусь, для конкретной задачи вопроса!

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
Ну если Роберт не понимает, точнее нет конкретики(думал я такой одарённый), то уже не знаю...
Вы писали:

  • Известно что  <FORM> внутри <FORM> не поддерживается! Но как же быть? - поддерживается
  • Есть компонент  со стандартной джумловской сортировкой пунктов (фронтенд) которая реализуется только в тегах <form>. - какой именно?!
  • Точней список товаров с различным кол-ом цен от 1 до 5 (без всяких карточек товаров). Цены добавляются в корзину AJAXом тоже в теге <form> - допустим, и где ваш вопрос?

Это я уже додумываю что массив, вы уже сказали фореч и даю броские ответы надеясь попасть в нужное...и т.д. Это мы должны вытягивать из вас вопросы?
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
Вы что пьяный (извеняюсь)

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
всё.я только щас, перечитв, понял.моя вина, приношу извинения, не внимателен был вчера, переработался и основываясь на вчерашнем, не читав, продолжил.
позже отпишу.
ещё раз приношу извинения.
« Последнее редактирование: 09.05.2016, 11:37:34 от vipiusss »
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
компонент самописный, я сам написал компонент, список каких то товаров с пятью ценами в каждой записи, самописный компонент, компонент самописный. ..... компонент, не модуль не плагин, список товаров.....

Получилось то что получилось, код наверху, форма в форме. Ничего сложного. Как решить? Убрать вторую форму из нутри не могу, ломается весь смысл задумки. Наружнюю форму убрать не могу-это стандартная джумловская сортировка. Вы знакомы с Joomla?

 Ответили-JavaScript. Спасибо. Хоть на том.

  • Известно что  <FORM> внутри <FORM> не поддерживается! Но как же быть? - поддерживается

Не поддерживается подтвердили же уже

Масив и фореч тут ваще ни какой роли не играет




*

ghostcom

  • ***
  • 54
  • 0
всё.я только щас, перечитв, понял.моя вина, приношу извинения, не внимателен был вчера, переработался и основываясь на вчерашнем, не читав, продолжил.
позже отпишу.
ещё раз приношу извинения.

Да ладно бывает, я тоже извеняюсь

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
а если при соблюдении условия  <?php if ($item->price_1 > 0): ?> div "бокс" вызвать инклуде (<?php include 'ФОРМА ВНУТРЕННЯЯ.php'; ?>) из левого файла, а тут перед <?php endif; ?> закончить дополнением-else вернуться к первой форме?
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
а при загрузке DOM все равно в одном HTML будет. Надо чтоб внутренние формы подгружались динамически после загрузки страницы. По нажатию


*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
а если дополнить:

$.ajax({
  url: 'вн.форма.php?action=ваш див',
  success: function(data) {
    $('.results').html(data);
  }
});

это наподобие else вернёт вас на исполнителя: вн.форма.php
///
хотя нет, наверно форма в форме так тоже не сработает, хотя попробуйте.
« Последнее редактирование: 09.05.2016, 12:20:43 от vipiusss »
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
ну да как то так надо делать. но я не знаю как это все прописать

какова вида ссылка должна быть на этот скрипт?

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
какая ссылка? оберните в <script></script> прямо в теле
вы попробуйте будет ли этот GET метод работать, потому что можно ещё рискнуть другим скриптом.
стояло бы это всё у меня-давно бы не гадали.
а так методом тыка.
ну или ждите знающих скрипт хорошо, в любом случае, вы ничего не теряете пробуя.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

vipiusss

  • ********
  • 5496
  • 318
  • JoomlaNet
Спойлер
[свернуть]

и forma1.php:

Спойлер
[свернуть]

попробуйте так как то...может что упустил.может и не верно, наугад, не пробуя.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями

*

ghostcom

  • ***
  • 54
  • 0
Тоже самое.

А если сделать как нибудь так.

Код: php
<form id="adminForm" method="post" name="adminForm">
 
                   <h3><?php echo $item->title; ?></h3>
 
                   <div class="panel_pl">
 
                        <?php if ($item->price_1 > 0): ?> // если цена_1 больше 0 показать box
                            <div class="box">
                                <a href="на сабмит price_1">ЦЕНА_1</a>
                            </div>
                        <?php endif; ?>
 

                        <?php if ($item->price_2 > 0): ?> // если цена_2 больше 0 показать box
                            <div class="box">
                                <a href="на сабмит price_2">ЦЕНА_2</a>
                            </div>

                   </div>
</form>

<form id="price_1" method="post" action="" class="cart">
                              <div><?php echo $params->get('price_title_1'); ?></div>
                              <fieldset>
                                 <input type="hidden" name="cartToken" value="<?php echo $session->get('cartToken');?>" />
                                 <input type="hidden" name="my-item-id" value="<?php echo $item->id; ?>" />
                                 <input type="hidden" name="my-item-name" value="<?php echo $item->title; ?> - <?php echo $params->get('price_title_1'); ?>" />
                                 <input type="hidden" name="my-item-price" value="<?php echo $item->price_1; ?>" />
                                 <input type="hidden" name="my-item-qty" value="1" size="1" />
                                 <input type="submit" name="my-add-button" value="<?php echo $currencySymbol ?><?php echo $item->price_1; ?>" class="button" />
                              </fieldset>
                           </form>

<form id="price_2" method="post" action="" class="cart">
                              <div><?php echo $params->get('price_title_2'); ?></div>
                              <fieldset>
                                 <input type="hidden" name="cartToken" value="<?php echo $session->get('cartToken');?>" />
                                 <input type="hidden" name="my-item-id" value="<?php echo $item->id; ?>" />
                                 <input type="hidden" name="my-item-name" value="<?php echo $item->title; ?> - <?php echo $params->get('price_title_2'); ?>" />
                                 <input type="hidden" name="my-item-price" value="<?php echo $item->price_2; ?>" />
                                 <input type="hidden" name="my-item-qty" value="1" size="1" />
                                 <input type="submit" name="my-add-button" value="<?php echo $currencySymbol ?><?php echo $item->price_2; ?>" class="button" />
                              </fieldset>
                           </form>

Вынести формы за пределы и сделать ссылку на сабмит конкретной формы.

Возможно такое. Если да то какая должна быть ссылка на форму с ID

*

ghostcom

  • ***
  • 54
  • 0
тоже не получается страница перезагружается, товар не добавляется

*

robert

  • ********
  • 4002
  • 371
Используйте jQuery.ajax, в этом случае вам даже не нужна обертка <form/>, достаточно иметь inputs с уникальными идентифиткаторами (id, class etc.).
Спойлер
[свернуть]
Если же нужно одним нажатием отправить несколько форм, то принцип тот же, только нужно организовать цепочку, засовывая последующее действие в success предыдущего.
« Последнее редактирование: 09.05.2016, 15:53:49 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.