Skip to content
mxDadata
mxDadata
Подсказки DaData и валидация адреса для MiniShop3 в MODX 3
  • MODX 3
  • PHP 8.2
  • miniShop3
  1. Компоненты
  2. mxDadata
  3. Подключение на сайте

Подключение на сайте ​

Сниппеты выводятся в чанке формы заказа (например tpl.msOrder) или эквиваленте. Вызов должен быть некэшированным, иначе скрипты не попадут на страницу.

Коннектор витрины ​

URL: assets/components/mxdadata/connector-web.php (в сниппетах подставляется абсолютный URL от [[++assets_url]]).

Переопределение: параметр сниппета connectorUrl.

Разрешённые действия (см. исходник коннектора), в том числе: Suggest/Address, Suggest/Party, Suggest/Name, Suggest/Email, Suggest/Bank, Party/FindById, Geolocate/Address, Tools/Version.

Публичный POST без сессии менеджера. В ответах заголовок Access-Control-Allow-Origin: * (см. connector-web.php). Ошибки процессора в JSON: 'Processor error' без текста исключения.

Имена полей формы MiniShop3 ​

name в форме должны совпадать с ожиданиями сниппетов и модели msOrder.Address (и полей Party для ИНН).

Адрес (модель Address) ​

name (форма)Поле моделиОписаниеАвтозаполнение
address_first_namefirst_nameИмя—
address_last_namelast_nameФамилия—
address_phonephoneТелефон—
address_emailemailEmail—
address_text_addresstext_addressАдрес (основное поле для подсказок)Да
addresstext_addressТо же, альтернативное имяДа
address_fias_idfias_idКод ФИАС (часто скрытое)Да
address_citycityГородДа
address_regionregionРегионДа
address_indexindexПочтовый индексДа
address_streetstreetУлицаДа
address_buildingbuildingДомДа
address_roomroomКвартира / офисДа

Реквизиты юрлица (Party, ИНН) ​

name (форма)ОписаниеАвтозаполнение
address_innИННДа (ввод)
innИНН, альтернативаДа
address_company_nameНаименование организацииДа
company_nameАльтернативное имяДа
address_kppКППДа
kppАльтернативаДа
address_ogrnОГРНДа
ogrnАльтернативаДа
address_legal_addressЮридический адресДа
legal_addressАльтернативаДа

Порядок с msRussianPost ​

Чтобы доставка Почтой России пересчиталась после выбора подсказки:

  1. Поля адреса и подсказки mxDadata (mxDadataAddressSuggest и при необходимости Party) — выше по разметке
  2. Затем msrpLexiconScript → msRussianPost → чанки виджета Почты

После обновления адреса срабатывает событие mxdadata:order-address-updated. russianpost.js подписан на него и вызывает пересчёт, если выбрана доставка Почты России. Хук ms3Hooks.afterAddOrder в ряде сценариев после order/set не вызывается.

Демо чанка ​

Чанк tpl.mxdadata.msOrder в пакете содержит блок «Демо mxDadata» в <details> (внизу):

  • поля Party (#mxdadata-demo-inn и реквизиты)
  • контейнер #mxdadata-demo-universal для mxDadataForm (конфиг chunk.mxdadata.demoFormSug через suggestionsChunk)
  • поле адреса для mxDadataAddressSuggest

В конце чанка вызываются mxDadataAddressSuggest, mxDadataPartySuggest (innInput на демо-ИНН) и mxDadataForm.

Показ демо в штатном чанке — только если корзина не пуста (ветка в шаблоне на непустую корзину). На экране «пустая корзина» демо намеренно не выводится: не подключаются скрипты и запросы к DaData.

Проверка всех трёх сниппетов на одной странице без товаров в корзине (когда блок из tpl.mxdadata.msOrder не подходит):

  1. Создайте отдельный ресурс с произвольным шаблоном (отдельного демо-шаблона в транспорте нет).
  2. Разметка формы + suggestionsChunk = chunk.mxdadata.demoFormSugTest для mxDadataForm, плюс mxDadataAddressSuggest и mxDadataPartySuggest с нужными input / innInput.
  3. Либо передайте непустой suggestions в параметре. Без валидного JSON подсказки не инициализируются.

Стили ​

Общие стили подсказок: assets/components/mxdadata/css/web/suggest.css (подключается хелпером вместе со сниппетами).

Fenom ​

При auto_escape выводите сниппеты как сырой HTML (|raw / {raw …}), чтобы не экранировались <script>.

Примеры синтаксиса MODX и Fenom: сниппеты и mxDadataForm.