Member 14920672 Ответов: 0

Добавление различных идентификаторов для динамически генерируемых элементов


Я уже обращался за помощью, чтобы решить этот вопрос. Но у меня есть совет описать свой вопрос более подробно, чтобы увеличить шансы получить ответ. И я постараюсь это сделать. У меня есть страница оформления заказа на моем сайте. Существует 3 способа оплаты (банковский перевод, PayPal, Hello).(обратитесь к image_checkout1). "Привет" - это способ оплаты, добавленный мной самим. Мне нужно стилизовать с помощью CSS, Привет способ оплаты. Я нашел в Dev. dashboard html-код, который создает эти способы оплаты в браузере.(обратитесь к image_checkout2После этого я нашел php-файл, ниже приведен код, который динамически создает эти теги меток(если я правильно понимаю этот процесс).

//13.getRadioPaymode
 function getRadioPaymode($var, $default, $disabled, $type){
   $app = JFactory::getApplication();
   $db  = JFactory::getDbo();
   $html = '';
   $gatewayType = 'TRUE';
   $i = 0;

   $option = '';
   if($disabled == 1)
     $option = 'disabled';

   if($type == 'deposit')
     $gatewayType = 'is_deposit=1';
   if($type == 'subscription')
     $gatewayType = 'is_subscription=1';

   $query = "SELECT gwcode AS value, gateway_name AS text FROM #__jblance_paymode ".
        "WHERE published=1 AND ".$gatewayType." ".
        "ORDER BY ordering";
   $db->setQuery($query);
   $paymodes = $db->loadObjectList();

   if(empty($paymodes)){
     $html = '<p class="alert alert-error">'.JText::_('COM_JBLANCE_NO_PAYMENT_GATEWAY_ENABLED').'</p>';
     return $html;
   }

   foreach($paymodes as $item){
     $checked = $img = '';
     $imgPath = "components/com_jblance/gateways/images/$item->value.png";

     //keep the first element checked
     if(++$i == 1) $checked="checked";

     if(JFile::exists($imgPath))
       $img = '<img class="img-polaroid" title="" src="'.$imgPath.'" alt="'.$item->text.'" style="margin-left:10px; width:100px; height:30px;">';


 $html .=  "\n\t".
           '<label class="radio"  style="min-height:42px;">'. "\n".
           '<input type="radio" style="float:none;" name="'.$var.'" id="'.$var.'" value="'.$item->value.'" '.$checked.'>'.
           $img.
           '<span style="margin-left: 10px;">'.JText::_($item->text).'</span>'.
           '</label>';


    }


  $html .= "\n";
   return $html;


   }


Ниже приведена часть кода php-файла, который рендерит страницу с проблемой. И в этом коде есть функция, которая добавлена выше.

<div class="sp10"> </div>
    <div id="div-gateway" class="well well-small white">
      <div class="control-group">
        <label class="control-label" for="delivery"><?php echo JText::_('COM_JBLANCE_PAYMENT'); ?>:</label>
        <div class="controls">
          <?php 
          $list_paymode = $model->getRadioPaymode('gateway', '', '', 'subscription');
          echo $list_paymode;
          var_dump($list_paymode);
          ?>
        </div>
      </div>
    </div>


Что я уже пробовал:

После этого как я обратился за помощью на этот сайт в первый раз. У меня есть решение. Я вставил код из этого решения. Это мой код после добавления кода из решения

$idlist = array("ida", "idb", "idc");
     foreach($idlist as $id){
     $html .=  "\n\t".

          '<label id="' . $id . '" class="radio" style="min-height:42px;">'. "\n".

           '<input type="radio" style="float:none;" name="'.$var.'" id="'.$var.'" value="'.$item->value.'" '.$checked.'>'.
           $img.
           '<span style="margin-left: 10px;">'.JText::_($item->text).'</span>'.

             '</label>';

     }

   }

   $html .= "\n";
   return $html;


Идентификаторы были добавлены в теги этикеток, но теперь у меня есть 9 способов оплаты вместо 3 на странице (3 банковских перевода, 3 PayPal, 3 Hello)(пожалуйста, смотрите checkout_image3Я новичок в php, я просто создаю сайты с помощью CMS. Пожалуйста, помогите мне решить эту проблему.

Member 14920672

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

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

Richard MacCutchan

Если вы закончили с девятью объектами вместо трех, то это звучит так, как будто вы повторяете свои переменные слишком много раз. это не проблема кодирования, а простая логика. Но приведенный выше код не дает никакого представления о том, что вы делаете, чтобы получить такой результат.

Member 14920672

Я добавил полный код функции и часть кода, который рендерит эту функцию. Может быть, это поможет найти какое-то решение.

0 Ответов