Новости Joomla

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

В пакет входят:
- библиотека Webtolk/Cdekapi
- системный плагин System - WT Cdek для хранения настроек и AJAX-интеграций
- task-плагин Task - Update WT Cdek data для обновления локальных копий справочников CDEK по расписанию
- web asset с официальным JavaScript-виджетом СДЭК

👉 v.1.3.0. Что нового?
- Полный рефакторинг библиотеки. Библиотека переработана в entity-based API с фасадом Cdek и отдельным слоем запросов. Обратная совместимость не нарушена, поэтому версия библиотеки - 1.3.0.
- Добавлена поддержка новых разделов API СДЭК. Добавлена поддержка новых разделов API СДЭК: webhooks, prealert, печатные формы, payment, passport, reverse, intakes и других сущностей.
- Улучшена интеграция с Joomla.
Улучшена интеграция с Joomla: installer script для layouts, новые поля Joomla Form для тарифов и обновлённые js виджета CDEK.
- документация библиотеки. Все методы библиотеки подробно описаны, а так же текст документации собран в отдельной папке в git репозитории и будет опубликован на сайте.

Библиотека эта нужна для разработчиков, создающих свои расширения для интеграции Joomla и курьерской службы CDEK.

Страница расширения
GitHub расширения

@joomlafeed

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

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
Просмотров: 1143
Последний ответ 12.04.2021, 11:12:11
от sashahz
Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

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

Автор platonische

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

Автор platonische

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

Автор Aspik

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