Новости Joomla

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

Joomla 5+ пакет для интеграции с API Почты России: нормализация данных, расчёт доставки, создание отправлений, партии, документы, возвраты, поиск отделений, справочники и SOAP-отслеживание.

v.3.0.0. Что нового?
Это дальнейшее развитие ранее закрытой Joomla-библиотеки для работы с API сервиса Отправка (для бизнеса) Почты России. Поэтому версия не 1.0.0, а 3.0.0.

Сейчас эта библиотека ушла от собственных реализаций и стала Joomla-обёрткой известного PHP SDK от Lapay Group.

Возможности библиотеки.
- получение настроек аккаунта, точек сдачи и текущего остатка запросов к API;
- нормализация адресов, ФИО и телефонов перед созданием отправления;
- расчёт тарифа и срока доставки;
- создание, поиск, изменение, удаление и возврат заказов в состояние «Новые»;
- проверка надёжности получателя;
- создание партий, просмотр партий и заказов внутри партии;
- генерация пакета печатных документов и формы Ф103;
- создание, изменение и удаление возвратных отправлений;
- поиск отделений по индексу, адресу и координатам, получение сервисов отделения;
- локальный список стран;
- SOAP-отслеживание операций по РПО и работа с билетами пакетного трекинга.

👩‍💻 Joomla-возможности.
В пакете библиотеки WT Otpravkapochtaru есть поля Joomla Form для расширений. Они позволяют работать в интерфейсе Joomla с некоторыми типами данных, получаемых по API из вашего личного кабинета в ЛК Почты России для бизнеса.
На данный момент в библиотеке доступны 3 поля списков, которые отображают доступные в аккаунте ОПС, типы и категории отправлений.
Поддерживаются зависимые списки: значение одного поля обновляется при изменении другого.

Системные требования.
Системные требования в основном связаны с системными требованиями апстрима библиотеки - LapayGroup PHP SDK.
- Joomla 5+
- PHP 8.3+
- Расширения PHP:
-- ext-mbstring
-- ext-simplexml
-- ext-soap (опционально, для трекинга)
-- ext-zip

Ссылки:
- Страница расширения
- GitHub библиотеки и документация

@joomlafeed

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

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Здравствуйте!

собственно не могу понять почему в модели я не могу получить post или get данные которые я отправил из формы

Код
JFactory::getApplication()->input->get('search_title', '', 'post');
возвращает string(0) ""

нужно через контроллер передать эти данные?

подскажите пожалуйста, буду признателен!
« Последнее редактирование: 20.10.2014, 18:30:16 от b2z »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Post запрос в модели компонента
« Ответ #1 : 20.10.2014, 14:31:53 »
JFactory::getApplication()->input->post->get('search_title', '');
интернет-блог: http://websiteprog.ru
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #2 : 20.10.2014, 14:36:49 »
JFactory::getApplication()->input->post->get('search_title', '');
я просто тут на быструю руку писал и объект input пропустил
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Post запрос в модели компонента
« Ответ #3 : 20.10.2014, 14:39:40 »
я просто тут на быструю руку писал и объект input пропустил
То есть все ок? Или у Вас в коде JFactory::getApplication()->input->post->get('search_title', '') и не работает?
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #4 : 20.10.2014, 14:40:22 »
То есть все ок? Или у Вас в коде JFactory::getApplication()->input->post->get('search_title', '') и не работает?
угу(
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Post запрос в модели компонента
« Ответ #5 : 20.10.2014, 14:45:00 »
Код формы покажите!
Если у вас форма через XML формируется и выводится через $this->form->getInput('name') то у вас все елементы в мессиве jform будут!
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #6 : 20.10.2014, 14:48:15 »
Код формы покажите!
Если у вас форма через XML формируется и выводится через $this->form->getInput('name') то у вас все елементы в мессиве jform будут!

та не, модуль поиска по стороннему компоненту!


Код
<?php
$search_title = JFactory::getApplication()->input->get('search_title', '', 'post');
?>
<form id="mod-finder-searchform" class="search" method="post" action="/katalog-domov">
    <div class="ico" onclick="jQuery(this).parent('form').submit();"></div>
    <div class="finder">
        <fieldset name="search">
        <input onblur="if (this.value=='') this.value='<?=$search_title?>';" onfocus="if (this.value=='<?=$search_title?>') this.value='';" id="search_title" class="search-query input-medium" type="text" value="<?=$search_title?>" size="25" name="search_title">
        </fieldset>
    </div>
</form>

ковыряю чужой компонент, вот не могу понять почему в модели не видно ни post ни get
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #7 : 20.10.2014, 14:51:33 »
код модели для ясности картины
Код
<?php
defined('_JEXEC') or die;

class CatalogModelFrontpage extends JModelItem
{





    private function item()
    {

        $db = $this->getDbo();
        $query = $db->getQuery(true);
        $published = $this->getState('filter.published', 1);
        $archived = $this->getState('filter.archived', 2);
        $app = JFactory::getApplication();
        $filter_post = $app->input->get('filter', '', 'post');

        $search_title = JFactory::getApplication()->input->post->get('search_title', '');

        var_dump($search_title);

        $sort = $app->input->get('sort', '', 'post');

        if (!empty($filter_post)) {

            $filter = array();

            for ($i = 0; $i < count($filter_post); $i++) {

                if (!in_array('0', $filter_post[$i])) {

                    if (is_numeric($filter_post[$i]['value'])) {

                        $filter[$filter_post[$i]['name']] = $filter_post[$i]['value'];
                    }
                }
            }

        }

        $query->select(
            'a.id AS id, ' .
            'a.title AS title, ' .
            'a.catid AS catid, ' .
            'a.unique_code AS unique_code, ' .
            'a.price AS price, ' .
            'a.floor AS floor, ' .
            'a.area AS area, ' .
            'a.params AS params, ' .
            'a.images AS images, ' .
            'a.options AS options, ' .
            'a.description AS description, ' .
            'm.id AS mid '

        );

        $query->from('#__catalog AS a')
            ->join('LEFT', '#__menu AS m ON a.title = m.title');

        $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()). ',' . $db->quote('*'). ')')
            ->where('(a.state = ' . (int)$published . ' OR a.state = ' . (int)$archived . ')');

        if (!empty($filter_post)) {

            $query->where('(a.price >= ' . (int)$filter['price-min'] . ' AND a.price <= ' . (int)$filter['price-max'] . ')')
                ->where('(a.floor >= ' . (int)$filter['floor-min'] . ' AND a.floor <= ' . (int)$filter['floor-max'] . ')')
                ->where('(a.area >= ' . (int)$filter['area-min'] . ' AND a.area <= ' . (int)$filter['area-max'] . ')');
        }

        if(!empty($search_title)) {
            $query->where('a.title LIKE '.$db->Quote('%'.$db->escape($search_title, true).'%').'');
        }


        if (!empty($sort)) {

            $query->order('a.' . $sort);
        }

        $db->setQuery($query);

        return $db->loadObjectList();
    }
    
    private function newArray(){

         $array = array();
         $field = array();

         $rows = $this->item();

         for($i = 0; $i < count($rows); $i++){

                $params[$i]     = json_decode($rows[$i]->params, true);
                $images[$i]     = json_decode($rows[$i]->images, true);
                $options[$i]    = json_decode($rows[$i]->options, true);

                unset($params[$i]['stock-ico']);


                $field[$i] = array(
                    'id'            => $rows[$i]->id,
                    'title'         => $rows[$i]->title,
                    'catid'         => $rows[$i]->catid,
                    'unique_code'   => $rows[$i]->unique_code,
                    'price'         => $rows[$i]->price,
                    'floor'         => $rows[$i]->floor,
                    'area'          => $rows[$i]->area
                    );

                $array[$i] = array_merge($field[$i],$params[$i],$images[$i],$options[$i]);

            }

            return $array;
    }
    
    private function sortString($array){
        
        $app           = JFactory::getApplication();
        $filter_post   = $app->input->get('filter', '', 'post');
        
        $filter = array();
        $list   = array();
        $result = array();
        
        for($i = 0; $i < count($filter_post); $i++){
            
            if(!in_array('0', $filter_post[$i])){
                
                if(!is_numeric($filter_post[$i]['value'])){
                    
                    $filter[$filter_post[$i]['name']] = $filter_post[$i]['value'];    
                }  
            }
        }
        
        if(isset($filter)){
            
            $filter_count = count($filter);
            
            for($i = 0; $i < count($array); $i++){
                
                //Находим схождение массивов $filter и $array[$i]
                $comparison = array_intersect($filter,$array[$i]);
                    
                if(isset($comparison)){
                
                    foreach($comparison as $compare){
                        //Проверяем искомое значение в массиве $filter
                        if(in_array($compare,$filter)){
                            //Ищем ключи в массиве $filter
                            $key = array_search($compare,$filter);
                            //Создаем массив из id, совпадающих со значениями из $filter
                            if($filter[$key] == $array[$i][$key]){
          
                                $list[] = $array[$i]['id'];
                            }
                        }
                    }
                }
            }
        }
                
        //Подсчитать количество id в массиве $list
        //Возвращаем массив ключами которого являются значения массива $list
        if(isset($list)){
            
            $values_count = array_count_values($list);
        }else{
            
            exit();
        }
        
        //Создаем массив схожими поля из $filter и $array  
        foreach($values_count as $key => $values){
            
            if($filter_count == $values){
                
              $result[] = $key;  
            }
        }
        
        if(!empty($result)){
            
            for($i = 0; $i <= count($array); $i++){
                
                if(isset($array[$i])){  
                  
                    foreach($result as $r){
                  
                        if(array_search($r,$array[$i])){
                    
                           if($array[$i]['id'] == $r){
                              
                               $output[] = $array[$i];
                          }
                        }
                    }    
                }  
            }
      
            return $output;
            
        }elseif(empty($filter)){

            return $array;  
        }
    }
              
    function getView()
    {

        $app = JFactory::getApplication();
        $filter_post = $app->input->get('filter', '', 'post');
        $search_title = $app->input->get('search_title', '', 'post');
        $search = $app->input->get('search', '', 'post');

        if (!empty($filter_post)) {
            return $this->sortString($this->newArray());
        } else {
            return $this->newArray();
        }

    }
      
    function getCategory(){
            
            $db             = $this->getDbo();
            $query          = $db->getQuery(true);
            $app            = JFactory::getApplication();
            $itemid         = $app->input->getInt('Itemid', '');
            $published      = $this->getState('filter.published',1);
            $archived       = $this->getState('filter.archived',2);
                        
            $query->select(
'a.id AS id, '.
'a.title AS title, '.
                        'a.link  AS link, '.
'a.params AS params '
);
            
            $query->from('#__menu AS a');
            
            $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()). ',' . $db->quote('*'). ')')
                ->where('(a.published = ' . (int) $published . ' OR a.published = ' . (int) $archived . ')')
                ->where('parent_id = "'.$itemid.'"');
            $query->order('a.lft');
            
            $db->setQuery($query);
            return $db->loadObjectList();
        }
        
        
    function getFilter()
    {

        $db = $this->getDbo();
        $query = $db->getQuery(true);
        $doc = JFactory::getDocument();
        $published = $this->getState('filter.published', 1);
        $archived = $this->getState('filter.archived', 2);

        $query->select(
            'a.id AS id, ' .
            'a.title AS title, ' .
            'a.catid  AS catid, ' .
            'a.type AS type, ' .
            'a.params AS params,' .
            'a.hidden AS hidden, ' .
            'a.filter AS filter'
        );

        $query->from('#__catalog_customoptions AS a');

        $query->where('(a.published = ' . (int)$published . ' OR a.published = ' . (int)$archived . ')');

        $query->order('a.ordering ASC');
        $db->setQuery($query);
        return $db->loadObjectList();
    }
        
}
?>

причем там есть формочка filter отправляется через AJAX, ее данные видно
« Последнее редактирование: 20.10.2014, 14:57:52 от saharin88 »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Post запрос в модели компонента
« Ответ #8 : 20.10.2014, 15:21:54 »
А значение вообще уходит? В Developer tools браузера убедитесь, что значение ушло на сервер. Если ушло, то сделайте var_dump($app->input->post) и посмотрите, пришло ли оно.
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #9 : 20.10.2014, 15:36:14 »
А значение вообще уходит? В Developer tools браузера убедитесь, что значение ушло на сервер. Если ушло, то сделайте var_dump($app->input->post) и посмотрите, пришло ли оно.

значения полей уходят,, + в начале компонента видно еще данные
http://screencast.com/t/bCluW9fHTM
http://screencast.com/t/Mpd4whZ5rx

а когда посмотреть (var_dump($app->input->post) ) в методе(getView ) модели, данных уже нет...

получается где то внутри теряются данные

по модели не видно где бы перезатералось что то?

контроллера для этого view там нет
« Последнее редактирование: 20.10.2014, 15:39:33 от saharin88 »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Post запрос в модели компонента
« Ответ #10 : 20.10.2014, 15:57:39 »
Сделайте дамп в модели, после $filter_post = $app->input->get('filter', '', 'post');
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Post запрос в модели компонента
« Ответ #11 : 20.10.2014, 18:09:49 »
большое спасибо всем!
там я не посмотрел хорошо, а вывод реализован на AJAX, и естественно нужно было при отправке AJAX запроса добавить мои данные...
еще раз, всем большое спасибо, за то что уделили время!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание компонента для табеля рабочего времени

Автор sashahz

Ответов: 7
Просмотров: 1462
Последний ответ 12.04.2021, 11:12:11
от sashahz
Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

Ответов: 1
Просмотров: 1255
Последний ответ 01.03.2021, 04:08:48
от gartes
[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 1689
Последний ответ 12.02.2021, 11:24:26
от platonische
[РЕШЕНО] onChange в админке на field modal

Автор platonische

Ответов: 1
Просмотров: 1000
Последний ответ 30.01.2021, 16:40:45
от platonische
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 4146
Последний ответ 23.01.2021, 07:55:56
от hmr