Skip to content
  1. Компоненты
  2. GeoLocation2
  3. Web API (action.php)

Web API (action.php)

URL:

text
/assets/components/geolocation2/action.php

Ответ всегда JSON. Запросы отправляйте с заголовком X-Requested-With: XMLHttpRequest.

При geolocation2_debug = 1 подробности могут попадать в MODX error log.

CSRF

POST (save, confirm, dismiss) требуют поле csrf из плейсхолдера gl2_csrf (сессия). Токен выставляет сниппет модалки и отдаёт action=state.

GET

action=state

Текущее состояние без изменения сессии.

http
GET /assets/components/geolocation2/action.php?action=state

Пример ответа:

json
{
  "success": true,
  "message": "",
  "state": {
    "gl2_current_id": "1",
    "gl2_current_name_ru": "Москва"
  },
  "confirmed": true
}

Полный набор ключей в state зависит от сервиса и сессии.

action=data

HTML-фрагмент gl_data для текущего или указанного города (тот же чанк, что у сниппета).

ПараметрОписание
tplЧанк, по умолчанию tpl.GeoLocation2.data.current
city_idID города; если не передан, берётся из сессии

Пример ответа:

json
{
  "success": true,
  "html": "<div class=\"gl2-data-current\">...</div>",
  "city_id": 8,
  "tpl": "tpl.GeoLocation2.data.current"
}

action=search

Поиск активных городов для модалки.

ПараметрОписание
queryПодстрока в name_ru или name_en (может быть пустой)
limit1–100, по умолчанию 20

Пример ответа:

json
{
  "success": true,
  "items": [{ "id": 1, "name_ru": "Москва", "name_en": "Moscow" }],
  "query": "моск",
  "count": 1
}

POST

Тело: application/x-www-form-urlencoded или multipart/form-data.

ПолеОписание
actionsave, confirm или dismiss
csrfТокен
city_idID города (GlCity) для save
use_default1 — подставить город с флагом default

action=save

Сохраняет city_id, выставляет confirmed=1.

action=confirm

Подтверждает текущий или переданный город. С use_default=1 — город по умолчанию из БД.

action=dismiss

Закрытие модалки. С use_default=1 — записать город по умолчанию и confirmed=1. Иначе только confirmed=1 без смены города (см. dismissSetsDefault у GeoLocation2Modal).

Ошибки

json
{ "success": false, "message": "..." }

Типичные причины: неверный CSRF, неизвестный city_id, неизвестный action, запрос без X-Requested-With.

Примеры fetch

Поиск:

javascript
fetch('/assets/components/geolocation2/action.php?action=search&query=каз', {
  headers: { 'X-Requested-With': 'XMLHttpRequest' },
}).then((r) => r.json());

Сохранение города:

javascript
const body = new URLSearchParams({
  action: 'save',
  csrf: document.querySelector('[data-gl2-csrf]').dataset.gl2Csrf,
  city_id: '8',
});
fetch('/assets/components/geolocation2/action.php', {
  method: 'POST',
  headers: { 'X-Requested-With': 'XMLHttpRequest' },
  body,
});

JS модалки в assets/components/geolocation2/js/web/modal.js вызывает те же actions.

См. FAQ.