В цикле из базы выводится набор записей, каждая запись во фронте внутри своего дива, внутри каждого дива кнопка.
По нажатии на кнопку вызов формы и передача ей в качестве параметров значения конкретной записи, помещенной в тот же div, что и кнопка, вызывающая форму.
[spoiler title=Вывод из базы:]
foreach ($items as $i => $item) {
echo '<div class="mfo-co-item">';
if (isset($item->conditions) && count($item->conditions)) $list = $item->conditions;
echo '<h4>'.$item->offername.'</h4>';
if (isset($list) && count($list)) {
echo '<div class="conditions">';
$list_cnt = count($list);
$list_ii = 1;
foreach ($list as $listitem) {
if ($list_ii == $list_cnt)
{echo $listitem->condition;} else
{echo $listitem->condition.'<br />';}
$list_ii++;
}
echo '</div>';
}
echo '<div>'.JText::sprintf('MOD_MFO_CO_SM', number_format($item->sm_from,0,$dcs,$ths), number_format($item->sm_to,0,$dcs,$ths)).'</div>';
echo '<div>'.JText::sprintf('MOD_MFO_CO_PRC', number_format($item->prc_from,1,$dcs,$ths), number_format($item->prc_to,1,$dcs,$ths)).'</div>';
echo '<div>'.JText::sprintf('MOD_MFO_CO_TERM', number_format($item->term_from,0), number_format($item->term_to,0)).'</div>';
echo '<div><a class="btn btn-primary" href="#co_form">'.JText::_('MOD_MFO_CO_DEMAND').'</a></div>';
echo '</div>';
}
[/spoiler]
[spoiler title=Форма:]
<form action="<?php echo JRoute::_('index.php'); ?>" method="post" id="co-form" class="form-inline">
<a href="#" class="overlay" id="co_form"></a>
<div class="popup">
<a class="close" href="#"></a>
<div class="mfo_co_controls">
<div class="pretext">
<h2><?php echo JText::_('MOD_MFO_CO_FORM_CAPTION'); ?></h2>
<label><?php echo JText::sprintf('MOD_MFO_CO_FORM_PRETEXT', $item->offername); ?></label>
</div>
<div class="controls">
<?php if ((int)$item->sm_from == (int)$item->sm_to) {?>
<label for="amount-sm"><span><?php echo JText::_('MOD_MFO_CO_FORM_SM'); ?></span></label>
<input class="no-brd" type="text" id="amount-sm" readonly disabled="true" value="<?php echo (int)$item->sm_to; ?>">
<?php } else { ?>
<script>
jQuery(function() {
jQuery( "#slider-sm" ).slider({
range:"min",
value:<?php echo (int)$item->sm_from; ?>,
min:<?php echo (int)$item->sm_from; ?>,
max:<?php echo (int)$item->sm_to; ?>,
step:500,
slide: function( event, ui ) {
jQuery( "#amount-sm" ).val( ui.value );
getMSum(<?php echo (int)$item->term_to; ?>,<?php echo (int)$item->prc_to; ?>,ui.value);
}
});
jQuery( "#amount-sm" ).val( jQuery( "#slider-sm" ).slider( "value" ) );
});
</script>
<label for="amount-sm"><span><?php echo JText::_('MOD_MFO_CO_FORM_SM'); ?></span></label>
<input class="no-brd" type="text" id="amount-sm" readonly disabled="true">
<div id="slider-sm"></div>
<? } ?>
</div>
<div class="controls">
<?php if ((int)$item->term_from == (int)$item->term_to) {?>
<label for="amount-term"><span><?php echo JText::_('MOD_MFO_CO_FORM_TERM'); ?></span></label>
<input class="no-brd" type="text" id="amount-term" readonly disabled="true" value="<?php echo (int)$item->term_to; ?>">
<?php } else { ?>
<script>
jQuery(function() {
jQuery( "#slider-term" ).slider({
range:"min",
value:<?php echo (int)$item->term_from; ?>,
min:<?php echo (int)$item->term_from; ?>,
max:<?php echo (int)$item->term_to; ?>,
step:1,
slide: function( event, ui ) {
jQuery( "#amount-term" ).val( ui.value );
jQuery(getMSum(<?php echo (int)$item->term_to; ?>,<?php echo (int)$item->prc_to; ?>,ui.value));
}
});
jQuery( "#amount-term<?php echo $item->id; ?>" ).val( jQuery( "#slider-term<?php echo $item->id; ?>" ).slider( "value" ) );
});
</script>
<label for="amount-term"><span><?php echo JText::_('MOD_MFO_CO_FORM_TERM'); ?></span></label>
<input class="no-brd" type="text" id="amount-term" readonly disabled="true">
<div id="slider-term"></div>
<? } ?>
</div>
<div class="controls">
<label for="amount-mpay"><span><?php echo JText::_('MOD_MFO_CO_FORM_MPAY'); ?></span></label>
<input class="no-brd" type="text" id="amount-mpay" readonly disabled="true">
</div>
<div class="controls">
<p><span class="star">* </span><?php echo JText::_('MOD_MFO_CO_FORM_PS'); ?></p>
</div>
</div>
<div class="mfo_co_controls">
<?php if ((bool)JFactory::getUser()->guest) { ?>
<div class="controls">
<hr />
<label for="mod_mfo_co_name"><span><?php echo JText::_('MOD_MFO_CO_FORM_NAME'); ?></span><?php echo JText::_('MOD_MFO_CO_FORM_NAME_PH'); ?></label>
<input id="mod_mfo_co_name" type="text" class="inputbox"/>
</div>
<div class="controls">
<label for="mod_mfo_co_phone"><span><?php echo JText::_('MOD_MFO_CO_FORM_PHONE'); ?></span><?php echo JText::_('MOD_MFO_CO_FORM_PHONE_PH'); ?></label>
<input id="mod_mfo_co_phone" type="text" class="inputbox" placeholder="+7(___)___-__-__"/>
</div>
<?php } else { ?>
<div class="controls">
<hr />
<label><span><?php echo JText::_('MOD_MFO_CO_FORM_POSPTEXT'); ?></span></label>
</div>
<?php } ?>
</div>
<div class="mfo_co_controls">
<div class="controls">
<hr />
<button type="submit" tabindex="3" name="submit" class="btn btn-primary"><?php echo JText::_('MOD_MFO_CO_DEMAND')?></button>
</div>
<input type="hidden" name="option" value="com_mfo" />
<input type="hidden" name="task" value="send_mail.to" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
[/spoiler]
Поначалу думал вообще делал для каждой записи свою форму, но гемор тот еще получился, а когда кол-во записей перевалило за сотню, тормоза еще те начались.
Думал вызывать форму через js, передавая функции id нужно записи, а в форме делать запрос на получение одной записи по id, но хотелось бы обойтись без запросов.
Через скрытые поля - запутался, да и с выводом самой функции через js запутался.
Прошу помощи.