Новости Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

👩‍💻 Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla.v.6.1.0 Что нового?Модуль корзины. Отображение корзины в виде offcanvas-элемента.Кнопка выхода в панели управления пользователя. Что тут сказать, просто добавили. Отправка писем только для заказов, оплаченных определёнными способами. Это удобно для рассылки сообщений, привязанных к региону или провайдеру (например, инструкции по банковскому переводу только для заказов, оплаченных банковским переводом).Листинг выплат по партнерской системе. В разделе управления партнёрскими программами появилось новое подменю «Выплаты», в котором перечислены выплаты партнёрам (упрощённое отслеживание и сверка). Добавлены настройки, благодаря которым можно определить категории товаров, на которые начисляется партнёрская комиссия с продаж.Список комплектов товаров. Система комплектов позволяет отслеживать остатки товаров, продаваемых в комплекте.Подробнее в блоге Hikashop.Поскольку мы не сообщали ранее о Hikashop 6.0, то вкратце скажем, что он вышел в июне 2025г. В новой версии было:- 13 исправлений ошибок- 17 улучшений. В частности:- - Hikashop теперь проверяет UserAgent пользователя перед добавлением товара в корзину, чтобы отсечь ботов. Ведь компонент хранит корзины в базе данных.- - улучшен роутинг компонента, позволяющий использовать в названии товара даже слеши.- - улучшения фильтра товаров - ускорение загрузки категорий/брендов/характеристик.- 4 новых функции:- - добавлена поддержка Joomla 6.0.- - Улучшена возможность адаптации форм HikaShop на фронтенде к шаблонам, не использующим стандартные классы Joomla.- - Плагин внутреннего баланса: возможность исключить уцененные товары из начисленных баллов.- - Теперь можно выбирать склады для вариантов товаров.Подробнее в Changelog Hikashop.Также при работе с Hikashop стоит учитывать, что один и тот же код поддерживает версии Joomla от 3.х до 5.х, а в таблице сравнения версий заявлена и Joomla 2.5. Беглый просмотр кода показал, что компонент как был, так и остался старым и для совместимости с Joomla 4+ просто добавлен плагин.@joomlafeed#joomla #расширения #hikashop

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста...

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста...

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста "Просто о Digital"Гость:🎙 Владимир Сергеенко ( https://t.me/aixman ) • Интернет-маркетолог с 14-летним опытом• Соавтор книги «Нетворкинг»• Спикер конференции Ассоциации директоров по развитиюВедущий:💻 Игорь Филипенко ( https://t.me/igorleee )• Программист и предприниматель с 16-летним опытом в digital• Основатель подкаста "Просто о Digital"• Специалист по автоматизации бизнес-процессовВ этом выпуске вы узнаете:🔥 Актуальность сайтов в эпоху нейросетей• Актуален ли сайт сейчас и будет ли актуален в будущем?• Зачем нужен сайт? Есть ли иные инструменты привлечения клиентов?🤖 Нейросети vs Поисковики vs Сайты• Почему нейросети не заменят сайты в B2B-сегменте• Как Google и Яндекс меняют алгоритмы из-за AI-конкуренции📊 Сайт как центр вселенной вашего трафика• Почему без сайта вы сливаете 40% маркетингового бюджета впустую?🛡 Безопасность и Joomla 6.0• Как отфильтровать 99% ботов и сэкономить на трафике• Почему Joomla теперь обходит WordPress в безопасности и скорости⚖️ Выбор платформы: битва CMS• WordPress: 50% рынка но 80% уязвимостей• Joomla: профессиональная CMS для сложных проектов• Drupal: почему его похоронили в 2023 году• Tilda: когда конструктор выгоднее CMSПриятного просмотра/прослушивания!RSS: https://cloud.mave.digital/61930Mave: https://igorfilipenko.mave.digitalЯндекс Музыка: https://music.yandex.ru/album/35840190Telegram Mave: https://t.me/mavestreambot/app?startapp=igorfilipenkoApple Podcasts: https://podcasts.apple.com/us/podcast/просто-о-digital-и-бизнесе/id1801903450ВКонтакте: https://vk.com/podcasts-12488584Youtube: https://www.youtube.com/playlist?list=PLfR6jTpnkohDDco32xZ-KyMyWi_S5Xdy2=========================Видео-формат подкаста:Rutube: https://rutube.ru/video/b5762754f9d3e0dc382f32f3034be0a2/Youtube: https://youtu.be/nu1XF2jNbxY#подкаст #podcast

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
И как мне наладить фильтрацию данных в запросе?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Получается, что запрос по фильтру мне придется делать непосредственно во вьюхе, что уже не есть хорошо
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Ну у Вас уже бардак. В getListQuery() нельзя получать данные из запроса. Фильтрация делается через состояние модели. Обновление данных у Вас как срабатывает - после выбора даты в календаре?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
По нажатии ссылки в форме идет вызов js. который берет значения полей (даты) и отправляет их в модель (form.submit). Что дальше с ними в модели делать - ума не приложу.
При этом при первоначальном открытии формы пользователю необходимо показать минимальное и максимальное возможные значения дат - ограничить диапазон выбора.
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Получите значения в контроллере и обновите состояние модели. По сути - это фильтрация. Посмотрите часть 16 моей документации.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
По нажатии ссылки в форме идет вызов js. который берет значения полей (даты) и отправляет их в модель (form.submit). Что дальше с ними в модели делать - ума не приложу.
При этом при первоначальном открытии формы пользователю необходимо показать минимальное и максимальное возможные значения дат - ограничить диапазон выбора.
Получить и в запросе использовать?

Получите значения в контроллере и обновите состояние модели. По сути - это фильтрация. Посмотрите часть 16 моей документации.
Дим а зачем это пихать в состояние модели? Можно же все сделать в разы проще.. в состоянии модели придется пихать только если у нас данные идут через POST..
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Можно же все сделать в разы проще..
Например?

Мое видение такое - конроллер получает данные, вызывает модель и обновляет её состояние с учетом полученных данных, далее представление отображает эти данные.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Например?
<form action="?">
<input type="text" name="test" value="" />
<input type="submit" />
</form>

в getListQuery():

$input = JFactory::getApplication()->input;
$test = $input->getStriing('test', '');
if( !empty( $test ) ){
$query->where('field=' . $db->q($test));
}

никаких setState, getUserStateFromRequest и т.д. ненужно! В пагинации тоже эта переменная будет участвовать!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Получить и в запросе использовать?
Дим а зачем это пихать в состояние модели? Можно же все сделать в разы проще.. в состоянии модели придется пихать только если у нас данные идут через POST..
1. да (по идее, во всяком случае, я по другому пока не придумал)
2. у формы во вьюхе method="post", пожно поменять на method="get" - я разницы пока не вижу.

Например?

Мое видение такое - конроллер получает данные, вызывает модель и обновляет её состояние с учетом полученных данных, далее представление отображает эти данные.
Мое видение с вашим совпадает, только не хватает понимания механизма работы всего этого. В 16 части доки дан пример для админки, уже столкнулся с тем, что не все, что работает в админке, также работает во фронте.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
1. да (по идее, во всяком случае, я по другому пока не придумал)
2. у формы во вьюхе method="post", пожно поменять на method="get" - я разницы пока не вижу.
я вам выше привел пример как все это реализуется и как все должно работать!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
<form action="?">
method не указывать вообще?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
method не указывать вообще?
если не указывать то он по умолчанию GET что <form action="?"> что <form action="?" method="get"> это одно и тоже!
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
в getListQuery():

$input = JFactory::getApplication()->input;
$test = $input->getStriing('test', '');
if( !empty( $test ) ){
$query->where('field=' . $db->q($test));
}

никаких setState, getUserStateFromRequest и т.д. ненужно! В пагинации тоже эта переменная будет участвовать!
Ну да, так можно. Но модель нужно по возможности изолировать от Запроса. Запрос - это дело контроллера:

Цитировать
Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать.
Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами.
Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
    $dtmin = date_format(JFactory::getApplication()->input->getString('dtfrom'), 'Y-m-d');
    $dtmax = date_format(JFactory::getApplication()->input->getString('dtto'), 'Y-m-d');
Дата передается в формате 'd.m.Y', при попытке привести в sql-формату выдает:
Warning: date_format() expects parameter 1 to be DateTime, null given in
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Ну да, так можно. Но модель нужно по возможности изолировать от Запроса. Запрос - это дело контроллера:
Дим начнем с того что не всегда есть четкие понятия о том что такое MVC, даже разработчики Joomla всего этого четко не придерживаются!
например administrator/components/com_content/models/articles.php  даже тут это не соблюдают
Код: php
protected function populateState($ordering = null, $direction = null){	
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}

а в: components/com_content/models/article.php
Код: php
protected function populateState(){
$app = JFactory::getApplication('site');
// Load state from the request.
$pk = $app->input->getInt('id');
$this->setState('article.id', $pk);

Не думаю что можно так строго это делать и морочить себе голову через setState, getState.. если конечно это коммерческий компонент то можно, но не думаю что так архиважно! И как видишь данные приходят не из контроллера!
« Последнее редактирование: 08.05.2014, 14:26:08 от Istaan »
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Код: php
    $dtmin = date_format(JFactory::getApplication()->input->getString('dtfrom'), 'Y-m-d');
    $dtmax = date_format(JFactory::getApplication()->input->getString('dtto'), 'Y-m-d');
Дата передается в формате 'd.m.Y', при попытке привести в sql-формату выдает:
Warning: date_format() expects parameter 1 to be DateTime, null given in
Для начала скажите что у вас выводит в  JFactory::getApplication()->input->getString('dtto')!
как функция date_format работает не помню, но можно попробовать так:
Код: php
$input = JFactory::getApplication()->input;
$date = JFactory::getDate( $input->getString( 'dtto', '' ) );
echo $date->format( 'Y-m-d' );
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
    $dtfrom = JFactory::getApplication()->input->getString('dtfrom');
    $dtto = JFactory::getApplication()->input->getString('dtto');
    $dtmin = substr($dtfrom,8,2).'-'.substr($dtfrom,5,2).'-'.substr($dtfrom,0,4);
    $dtmax = substr($dtto,8,2).'-'.substr($dtto,5,2).'-'.substr($dtto,0,4);
$dtfrom - empty
$dtto - empty
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
[spoiler title=Вся вьюха]
Код: html4strict
<?php
defined('_JEXEC') or die;
JHtml::_('bootstrap.tooltip');
JHtml::_('jquery.framework');
$document = JFactory::getDocument();
$document->addStyleSheet('/media/com_mfo/css/jquery-ui-1.10.4.custom.min.css');
$document->addStyleSheet('/media/com_mfo/css/com_mfo_front.css');
$document->addScript('/media/com_mfo/js/jquery-ui-1.10.4.custom.js');
$loan = JFactory::getApplication()->input->getString('loan', '');
$list = JFactory::getApplication()->input->getString('list', '0');
$llist = '';
if ($list == '1') $llist = 'c';
if ($list == '2') $llist = 'd';
$ulogin = JFactory::getUser()->username;
$params = JComponentHelper::getParams('com_mfo');
$dcs = $params->get('mfo_decimal_separator', '.');
$ths = $params->get('mfo_thousands_separator', ' ');
if ($ths == '=') $ths = '';
$is_contributions = $params->get('mfo_is_contributions_columns', 0);
?>

<script type="text/javascript">
  UpdateFilter = function()
  {
    var form = document.getElementById('adminForm');
    jQuery('#loading').css('display', 'block');
    form.dtfrom.value = form.datepicker1.value;
    form.dtto.value = form.datepicker2.value;
    form.submit();
  };

  jQuery(document).ready(function($)
  {
    var outerDiv = $('body');
    $('<div id="loading"><div class="popup"><div class="loader"><div class="loader-label"><?php echo JText::_('COM_MFO_FTP_UPDATE_POPUP', true); ?></div></div></div></div>').appendTo(outerDiv);
  });
</script>

<div id="mfo" class="clearfix" >
  <h1><?php echo JText::sprintf('COM_MFO_H_DOCUMC', $loan); ?></h1>
  <form action="<?php echo JRoute::_('index.php?option=com_mfo&view=documc&loan='.$loan.'&list='.$list); ?>" name="adminForm" id="adminForm" class="form-horizontal">
    <div class="control-group  mfo-item">
      <div class="controls">
        <?php
          $db =JFactory::getDBO();
          $query = 'select lupdate from #__mfo_users where client = '.$db->quote($ulogin);
          $item = $db->setQuery($query)->loadResult();
          echo '<span class="mfo-lupdate">'.JText::sprintf('COM_MFO_FTP_LASTUPDATE', JHtml::_('date', $item, 'd.m.Y H:i')).'</span>';
        ?>
      </div>
      <div class="controls">
        <a class="btn a pull-right" href="/index.php?option=com_mfo&view=loans<?php echo $llist; ?>"><?php echo JText::_('COM_MFO_RETURN');?></a>
      </div>
    </div>
    <div class="control-group">
      <div class="controls">
        <h6><?php echo JText::_('COM_MFO_H_DOCUMS_L'); ?></h6>
        <?php
          $query = 'select bdate, edate, term, termtp, prc, sm, rest, arest, prest, crest, srest from #__mfo_loans where (client = '.$db->quote($ulogin).') and (num = '.$db->quote($loan).')';
          $item = $db->setQuery($query)->loadObject();
          $rests = $item->arest+$item->prest+$item->srest;
          if ($is_contributions) $rests += $item->crest;
          switch ((int)$item->termtp)
          {
            case 1:
              $termtp = JText::_('COM_MFO_TERM_DAY');
              break;
            case 7:
              $termtp = JText::_('COM_MFO_TERM_WEEK');
              break;
            case 30:
              $termtp = JText::_('COM_MFO_TERM_MONTH');
              break;
            default:
              $termtp = JText::_('COM_MFO_TERM_MONTH');
              break;
          }
          echo '<div class="loan-label">'.JText::_('COM_MFO_TABLE_DOCUMС_LABEL_BDATE').' <span>'.JHtml::_('date', $item->bdate, 'd.m.Y').'</span></div>';
          echo '<div class="loan-label">'.JText::_('COM_MFO_TABLE_DOCUMС_LABEL_EDATE').' <span>'.JHtml::_('date', $item->edate, 'd.m.Y').'</span></div>';
          echo '<div class="loan-label">'.JText::_('COM_MFO_TABLE_DOCUMС_LABEL_TERM').' <span>'.$item->term.$termtp.'</span></div>';
          echo '<div class="loan-label">'.JText::_('COM_MFO_TABLE_DOCUMС_LABEL_PRC').' <span>'.number_format($item->prc,4,'.','').'</span></div>';
          echo '<div class="loan-label">'.JText::_('COM_MFO_TABLE_DOCUMС_LABEL_SM').' <span>'.number_format($item->sm,2,$dcs,$ths).'</span></div>';
          echo '<div class="loan-label">'.JText::_('COM_MFO_TABLE_DOCUMС_LABEL_REST').' <span>'.number_format($item->rest,2,$dcs,$ths).'</span></div>';
          echo '<div class="loan-label">'.JText::_('COM_MFO_TABLE_DOCUMС_LABEL_RESTS').' <span>'.number_format($rests,2,$dcs,$ths).'</span></div>';
          echo '<div class="loan-label last"></div>';
        ?>
      </div>
    </div>
    <h6><?php echo JText::_('COM_MFO_H_DOCUMS_D'); ?></h6>
    <div class="control-group">
      <div class="controls">
        <?php
          $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
          $item = $db->setQuery($query)->loadRow();
          $dtmin = $item[0];
          $dtmax = $item[1];
        ?>
        <script>jQuery(function(){
          jQuery("#datepicker1").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#datepicker1").datepicker(jQuery.datepicker.regional["ru"]);
          jQuery("#datepicker1").datepicker("setDate","<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>");
          jQuery("#datepicker2").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#datepicker2").datepicker(jQuery.datepicker.regional["ru"]);
          jQuery("#datepicker2").datepicker("setDate","<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>");
        });</script>
        <div class="dt-filter">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_1'); ?></span><input type="text" class="datepicker" name="datepicker1" id="datepicker1" readonly>
          <span><?php echo JText::_('COM_MFO_FILTER_DT_2'); ?></span><input type="text" class="datepicker" name="datepicker2" id="datepicker2" readonly>
          <span><a href="javascript:UpdateFilter()"> Применить фильтр </a></span>
        </div>
      </div>
    </div>
    <div class="control-group">
      <div class="controls">
        <table class="mfo-table mfo-small">
          <thead>
            <tr>
              <th rowspan="2"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_ODATE'); ?></th>
              <th rowspan="2"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_DOCNAME'); ?></th>
              <th colspan="2"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_A'); ?></th>
              <th colspan="2"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_P'); ?></th>
              <?php if ($is_contributions) : ?>
                <th colspan="2"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_C'); ?></th>
              <?php endif; ?>
              <th colspan="2"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_S'); ?></th>
            </tr>
            <tr>
              <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_AD'); ?></th>
              <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_AC'); ?></th>
              <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС__D'); ?></th>
              <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС__C'); ?></th>
              <?php if ($is_contributions) : ?>
                <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС__D'); ?></th>
                <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС__C'); ?></th>
              <?php endif; ?>
              <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС__D'); ?></th>
              <th class="w80"><?php echo JText::_('COM_MFO_TABLE_DOCUMС__C'); ?></th>
            </tr>
          </thead>
          <tbody>
            <?php $id_item = 0;
            if (count($this->items)) :              
              $adebet_all = 0;
              $acredit_all = 0;
              $pdebet_all = 0;
              $pcredit_all = 0;
              $cdebet_all = 0;
              $ccredit_all = 0;
              $sdebet_all = 0;
              $scredit_all = 0;
              foreach ($this->items as $i => $item) :
                $id_item++; ?>
                <tr>
                  <td class="hc <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php echo JHtml::_('date', $item->odate, 'd.m.Y'); ?></td>
                  <td class="   <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php echo $item->docname; ?></td>
                  <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->adebet  != 0) {$adebet_all += $item->adebet; echo number_format($item->adebet,2,$dcs,$ths);} ?></td>
                  <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->acredit != 0) {$acredit_all += $item->acredit; echo number_format($item->acredit,2,$dcs,$ths);} ?></td>
                  <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->pdebet  != 0) {$pdebet_all += $item->pdebet; echo number_format($item->pdebet,2,$dcs,$ths);} ?></td>
                  <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->pcredit != 0) {$pcredit_all += $item->pcredit; echo number_format($item->pcredit,2,$dcs,$ths);} ?></td>
                  <?php if ($is_contributions) : ?>
                    <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->cdebet  != 0) {$cdebet_all += $item->cdebet; echo number_format($item->cdebet,2,$dcs,$ths);} ?></td>
                    <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->ccredit != 0) {$ccredit_all += $item->ccredit; echo number_format($item->ccredit,2,$dcs,$ths);} ?></td>
                  <?php endif; ?>
                  <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->sdebet  != 0) {$sdebet_all += $item->sdebet; echo number_format($item->sdebet,2,$dcs,$ths);} ?></td>
                  <td class="hr <?php if ($id_item == 1) {echo 'top-brd';}?>"><?php if ($item->scredit != 0) {$scredit_all += $item->scredit; echo number_format($item->scredit,2,$dcs,$ths);} ?></td>
                </tr>
              <?php
              endforeach; ?>
            <?php else : ?>
              <tr><td colspan="10" class="top-brd"><?php echo JText::_('COM_MFO_TABLE_NO_DATA'); ?></td></tr>
            <?php endif; ?>
          </tbody>
          <tfoot>
            <?php if (count($this->items)) : ?>
              <tr>
                <td colspan="2" class="top-brd hrb"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_FOOT_1'); ?></td>
                <td class="top-brd hrb"><?php echo number_format($adebet_all,2,$dcs,$ths); ?></td>
                <td class="top-brd hrb"><?php echo number_format($acredit_all,2,$dcs,$ths); ?></td>
                <td class="top-brd hrb"><?php echo number_format($pdebet_all,2,$dcs,$ths); ?></td>
                <td class="top-brd hrb"><?php echo number_format($pcredit_all,2,$dcs,$ths); ?></td>
                <?php if ($is_contributions) : ?>
                  <td class="top-brd hrb"><?php echo number_format($cdebet_all,2,$dcs,$ths); ?></td>
                  <td class="top-brd hrb"><?php echo number_format($ccredit_all,2,$dcs,$ths); ?></td>
                <?php endif; ?>
                <td class="top-brd hrb"><?php echo number_format($sdebet_all,2,$dcs,$ths); ?></td>
                <td class="top-brd hrb"><?php echo number_format($scredit_all,2,$dcs,$ths); ?></td>
              </tr>
              <tr>
                <td colspan="2" class="top-brd hrb"><?php echo JText::_('COM_MFO_TABLE_DOCUMС_FOOT_2'); ?></td>
                <td colspan="2" class="top-brd hrb"><?php echo number_format($adebet_all-$acredit_all,2,$dcs,$ths); ?></td>
                <td colspan="2" class="top-brd hrb"><?php echo number_format($pdebet_all-$pcredit_all,2,$dcs,$ths); ?></td>
                <?php if ($is_contributions) : ?>
                  <td colspan="2" class="top-brd hrb"><?php echo number_format($cdebet_all-$ccredit_all,2,$dcs,$ths); ?></td>
                <?php endif; ?>
                <td colspan="2" class="top-brd hrb"><?php echo number_format($sdebet_all-$scredit_all,2,$dcs,$ths); ?></td>
              </tr>
            <?php endif; ?>
            <tr><td colspan="10" class="top-brd"></td></tr>
          </tfoot>
        </table>
      </div>
    </div>

    <div>
      <input type="hidden" name="type" value="" />
      <input type="hidden" name="dtfrom" value="" />
      <input type="hidden" name="dtto" value="" />
      <input type="hidden" name="task" value="documc.work" />
      <?php echo JHtml::_('form.token'); ?>
    </div>
    
  </form>
</div>
[/spoiler]

[spoiler title=Вся модель]
Код: php
<?php
defined('_JEXEC') or die;

jimport('joomla.application.component.modellist');

class MfoModelDocumc extends JModelList
{

  public function getForm($data = array(), $loadData = true)
  {
    $form = $this->loadForm($this->option.'.documc', 'documc', array('control'=>'jform', 'load_data'=>$loadData));
    if (empty($form)) {return false;}
    return $form;
  }

  protected function getListQuery()
  {
    $ulogin = JFactory::getUser()->username;
    $loan = JFactory::getApplication()->input->getString('loan', '');
    $dtfrom = JFactory::getApplication()->input->getString('dtfrom');
    $dtto = JFactory::getApplication()->input->getString('dtto');
    $dtmin = substr($dtfrom,8,2).'-'.substr($dtfrom,5,2).'-'.substr($dtfrom,0,4);
    $dtmax = substr($dtto,8,2).'-'.substr($dtto,5,2).'-'.substr($dtto,0,4);
    print_r('1:'.$dtfrom.'<br />2:'.$dtto.'<br />'); // Даты отсутствуют

    $db = JFactory::getDBO();
    
    if (!$dtmin or !$dtmax) {
      $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
      $item = $db->setQuery($query)->loadRow();
      $dtmin = $item[0];
      $dtmax = $item[1];
    }

    $query = $db->getQuery(true);
    $query->select('odate, docname, adebet, acredit, pdebet, pcredit, cdebet, ccredit, sdebet, scredit');
    $query->from('#__mfo_docums');
    $query->where('client = '.$db->quote($ulogin));
    $query->where('loan = '.$db->quote($loan));
    $query->where('odate >= '.$db->quote($dtmin));
    $query->where('odate <= '.$db->quote($dtmax));
    $query->order('odate, id');
    return $query;
  }
  
  public function work()
  {
    $dtmin = $_GET["dtfrom"];
    $dtmax = $_GET["dtto"];
    print_r('1:'.$dtmin.'<br />2:'.$dtmax.'<br />'); // Выводит даты
    return true;
  }

}
[/spoiler]
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
вставьте в getListQuery
print_r($_REQUEST);
отсабмитте форму, и скажите нам что вывело
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
ну начало понятно ) вы не знаете что в GET forme все что в атрибуте action после ? не передается )

то есть для тех кто прогуливал уроки по PHP
Вариант 1:
<form action="?b=1" method="post">
   <input type="hidden" name="a" value="2" />
   <input type="submit" />
</form>
<?php echo $_REQUEST['a'] + $_REQUEST['b']; ?>
Результат будет три

Вариант два:
<form action="?b=1" method="get">
   <input type="hidden" name="a" value="2" />
   <input type="submit" />
</form>
<?php echo $_REQUEST['a'] + $_REQUEST['b']; ?>
Выведет два!
Потому что при такой передаче форму данные передаются так: ?b=1?a=2, а сервер будет отсчитывать от последнего знака вопроса!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Вывел страницу 404, в url:
index.php?datepicker1=28.03.2013&datepicker2=31.10.2013&type=&dtfrom=28.03.2013&dtto=31.10.2013&task=documc.work&967fe3561bf603f9721c965cd45d2a88=1
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
то есть для тех кто прогуливал уроки по PHP
ну да, образование 11 классов и корочки оператора эвм, остальное - опыт админа и программера в банке 5 лет. техник сц по ремонту пк - 6 лет, откуда жтут знание PHP...
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
ну начало понятно ) вы не знаете что в GET forme все что в атрибуте action после ? не передается )
Т.е. придется возвращаться к post
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Т.е. придется возвращаться к post
Зачем? вот тут: <?php echo JRoute::_('index.php?option=com_mfo&view=documc&loan='.$loan.'&list='.$list); ?>
это думаю можно оставить  JRoute::_('index.php?option=com_mfo&view=documc'); ?> ибо это сформирует ЧПУ ссылку! а вот после которой у вас очевидно будет так ссылка?loans=123&list=123
так эти два поля можна вынести из action и впихнуть:
<input type="hidden" name="loans" value="<?php echo $loan; ?>" />
<input type="hidden" name="list" value="<?php echo $list; ?>" />

ну да, образование 11 классов и корочки оператора эвм, остальное - опыт админа и программера в банке 5 лет. техник сц по ремонту пк - 6 лет, откуда жтут знание PHP...
Я проучился кучу лет в вузе на программиста, и поверьте у нас за эти кучу лет не было ни одного часа по PHP, HTML, CSS или JavaScript! Я уже молчу о том что на 4-м курсе я успешно вылетел из-за того что работая программистом забил на учебу )) Потом правда на заочке доучился, пока что не понял зачем я это сделал )))
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Вы все же не сделали то что я просил вас сделать здесь http://joomlaforum.ru/index.php/topic,291277.msg1457290.html#msg1457290
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
loan передается из другого представления, list - оттуда же, передается через url.
Есть несколько разновидностей списков договоров, каждая разновидность - своя вьюха. Из вьюхи со списком договоров по ссылке выводится вьюха операций по договору, где есть кнопка "возврат к списку", к какому - определяется значением list.
Значения loan и list выдергиваются из url, по другому их из вьюхи со списком договоров не получить - уже здесь же обсуждали. Если уберу их из JRoute, то при обновлении формы не смогу заново получить их значения. Или смогу из скрытых полей?
ЧПУ-ссылка у меня выглядит так: /loans.html?view=documc&loan=ЗВ/31/28.03.2013    list опущен в частном случае
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Ну почему же, сделал:
Вывел страницу 404, в url:
index.php?datepicker1=28.03.2013&datepicker2=31.10.2013&type=&dtfrom=28.03.2013&dtto=31.10.2013&task=documc.work&967fe3561bf603f9721c965cd45d2a88=1

А при включенном чпу выдает: Неверный параметр (это все, что есть на странице)
url: /loans.html?datepicker1=28.03.2013&datepicker2=31.10.2013&type=&dtfrom=28.03.2013&dtto=31.10.2013&task=documc.work&967fe3561bf603f9721c965cd45d2a88=1
« Последнее редактирование: 08.05.2014, 15:25:32 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
[spoiler title=Чуточку флейма]
Я проучился кучу лет в вузе на программиста, и поверьте у нас за эти кучу лет не было ни одного часа по PHP, HTML, CSS или JavaScript! Я уже молчу о том что на 4-м курсе я успешно вылетел из-за того что работая программистом забил на учебу )) Потом правда на заочке доучился, пока что не понял зачем я это сделал )))
А меня в конце 90-х жизнь перед выбором поставила: живи на улице, питайся где и как хочешь, и работы тоже не найдешь. И вот смотрю я на многих местных краснодипломированных магистров мгу в области it (ажно с десяток наберется на мою деревню), и понимаю, что, возможно, и к лучшему, что не терял время на институтскую скамью: сейчас и крыша над головой, и шашлык на праздник, и пиво по выходным, и дети сыты и в тепле, и репутация на деревне не последняя. Вывод: все, что ни делается - все к лучшему.
Хотя корочек иногда не хватает...
[/spoiler]
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Ну почему же, сделал:
А при включенном чпу выдает: Неверный параметр (это все, что есть на странице)
url: /loans.html?datepicker1=28.03.2013&datepicker2=31.10.2013&type=&dtfrom=28.03.2013&dtto=31.10.2013&task=documc.work&967fe3561bf603f9721c965cd45d2a88=1
Это не то что я просил!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
если форма с методом post, то вывод такой:
Код
Array ( [view] => documc [loan] => ЗВ/31/28.03.2013 [ list] => 0 [format] => HTML [Itemid] => 128 [option] => com_mfo ) 

если убрать из формы post, то submit реагирует именно так, как выше написал
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться