Новости 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 Гость просматривают эту тему.
  • 17 Ответов
  • 4888 Просмотров
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Код: php
$field = new SimpleXMLElement( '<field type="text" name="test" label="test"/>' );
$form->setField( $field, 'params' );

а можно и так
Код: php
JForm::addFormPath( __DIR__ . '/fields' );
$form->loadFile( 'add', false );
В папку fields кидаем файл add.xml с таким содержимым
Код: php
<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="attribs">
        <fieldset name="basic" label="COM_CONTENT_ATTRIBS_FIELDSET_LABEL">
            <field name="field1" type="text" label="Title:" value=""></field>
        </fieldset>
    </fields>
</form>
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
уже пробовал эти варианты

вроде всё просто: $form->setField($element, $group) но не работает

а без fieldset $form->setField($element) работает
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
а можно больше конкретики что пытаетесь сделать?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
добавить поле в форму в <fields name="properties">

а в шаблоне вывести:
Код: php
ul class="adminformlist">
<?php foreach ($this->form->getFieldset('properties') as $field) : ?>
<li>
<?php echo $field->label; ?>
<?php echo $field->input; ?>
</li>
<?php endforeach; ?>
</ul>
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
это ваш компонент или сторонний? и покажите XML файл
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
компонент мой
вот XML
Код: xml
	<fields name="properties">
<fieldset name="properties">

</fieldset>
</fields>
и я понял почему не работает:
Код: php
$form->setField($element, 'properties')
добавляет не в fieldset, а в fields
а в шаблоне я вывожу fieldset
Код: php
<ul class="adminformlist">
<?php foreach ($this->form->getFieldset('properties') as $field) : ?>
<li>
<?php echo $field->label; ?>
<?php echo $field->input; ?>
</li>
<?php endforeach; ?>
</ul>
поэтому ничего не выводится
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
если компонент ваш то для чего вы добавляете поле?

можно сделать так:
модель
Код: php
	public function getForm( $data = array(), $loadData = true )
{
$xmlData = 'Тут пихаете всю XML-ку в виде строки и при каком то условии можете менять данные';
$form = $this->loadForm( $xmlData, $xmlData, array( 'control' => 'jform', 'load_data' => $loadData ) );
if ( empty( $form ) ) {
return false;
}
return $form;
}
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
если компонент ваш то для чего вы добавляете поле?
поля добавляются на лету так как создаются в админке
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
а ну тогда просто формируйте XML файл в виде строки и кормите как я писал в 9 ответе! я так делаю в своем компоненте конструктора форм
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
да, получилось, пришлось формировать SimpleXMLElement со структурой, аналогичной xml-файлу, а затем выполнить $form->load(SimpleXMLElement)

Код: php
$xmlform = new SimpleXMLElement('<form />');
$xmlfields = $xmlform->addChild('fields');
$xmlfields->addAttribute('name', 'properties');
$xmlfieldset = $xmlfields->addChild('fieldset');
$xmlfieldset->addAttribute('name', 'properties');
$xmlfield = $xmlfieldset->addChild('field');
$xmlfield->addAttribute('name', 'property');
$xmlfield->addAttribute('type', 'text');
$xmlfield->addAttribute('label', 'COM_REALTY_FIELD_PROPERTY_LABEL');
if (!$form->load($xmlform))
{
die('Ошибка');
}
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
да, получилось, пришлось формировать SimpleXMLElement со структурой, аналогичной xml-файлу, а затем выполнить $form->load(SimpleXMLElement)
Ну я бы на вашем месте переписал на формирование обычной строкой!
кода будет в разы меньше и быстродействие будет по выше! как по мне клепать c нуля XML через simpleXml это изврат! ладно бы надо было распарсить и добавить элемент!
но так у вас выйдет кода в 10 раз больше )
« Последнее редактирование: 16.04.2013, 03:33:10 от Istaan »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
поля добавляются на лету так как создаются в админке
Кстати, а что мешает по итогам создания полей в админке сформировать статичный XML-файл для формы и потом уже его грузить стандартными средствами? С другой стороны есть метод getFieldsets, по идее можно получить нужный объект и уже к нему добавить поле.

p.s. Сорри, за некропост.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Поскольку добавляется в одну таблицу и она жестко определена до написания формы к ней.
То я в своем случае сделал так:
Display = none всем элементам кроме первого
на изменение повесил AJAX который получает данные - какое поле зажечь inline и в какую позицию поставить (визуальной)
если поле надо переделать то формирую html-код всего что надо вставить в стандартный код т.е. <label...></label><input>(или select и тд)

Поля все уже определены в XML т.к. ничего другого в таблицу и не вставишь, конечно кроме чего-нибудь вроде массива params с динамическим набором данных, но мне было достаточно этого.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Спустя 6 лет потребовалась подобная задача. Попробовал, вариант приведенный здесь хорошо.
Но у меня непонимание внутри getForm. В этой функции мне надо получить данные (какие же все-таки поля создавать).

Подскажите как можно внутри getForm получить данные (желательно $item от getItem)?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Получилось вытащить через
Код
$item_id = $this->state->get('item.id'); //Получили id элемента

Если неправильно подскажите - буду благодарен.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться