Skip to content
  1. Компоненты
  2. VueTools
  3. API Composables

API Composables

Готовые composable для работы с MODX из Vue-компонентов. Каждый импортируется из своего ключа Import Map.

useLexicon

Лексиконы MODX.

javascript
import { useLexicon } from '@vuetools/useLexicon'

const { _, has, getByPrefix } = useLexicon()
МетодВозвращаетОписание
_(key, params?)stringЗначение лексикона; если ключа нет — сам key
has(key)booleanЕсть ли ключ
getByPrefix(prefix)objectВсе ключи, начинающиеся с prefix

В params подставляются места вида [[+name]], {name} и :name.

javascript
_('my_component_title')                       // "Мой компонент"
_('my_component_welcome', { name: 'Иван' })   // из "Привет, {name}!" → "Привет, Иван!"

Лексиконы читаются из window.MODx.lang. Топики загрузите в контроллере:

php
public function getLanguageTopics()
{
    return ['mycomponent:default'];
}

useModx

Доступ к объекту window.MODx.

javascript
import { useModx } from '@vuetools/useModx'

const { config, siteId, isManager, getSetting } = useModx()
Свойство / методТипОписание
configComputedRef<object>MODx.config
userComputedRef<object>MODx.user
siteIdComputedRef<string>Токен авторизации MODx.siteId
hasPermission(key)booleanЕсть ли право key
getSetting(key, default?)*Значение из MODx.config
getManagerUrl(path?)stringURL панели управления
getAssetsUrl(component)stringURL папки assets компонента
getConnectorUrl(component)stringURL коннектора компонента
getContextKey()stringКлюч текущего контекста
isManager()booleanВыполняется ли код в панели управления
fireEvent(name, data?)voidВызвать событие ExtJS MODx

config, user и siteId — вычисляемые ссылки Vue: в шаблоне обращайтесь как config.assets_url, в коде — config.value.assets_url.

usePermission

Проверка прав пользователя. Права берутся из window.MODx.perm.

javascript
import { usePermission } from '@vuetools/usePermission'

const { can, canAny, canAll } = usePermission()
МетодВозвращаетОписание
can(key)booleanЕсть ли право key
canAny(keys)booleanЕсть ли хотя бы одно из прав
canAll(keys)booleanЕсть ли все права
getAll()objectВсе права пользователя
javascript
const { can } = usePermission()
const canEdit = computed(() => can('my_component_edit'))

Есть готовые проверки частых прав MODX: canCreateResource(), canEditResource(), canViewUsers(), canClearCache() и другие — все вызываются без аргументов.

useApi

HTTP-клиент к стандартному connector API MODX (?action=processor/path).

javascript
import { useApi } from '@vuetools/useApi'

const { get, post, put, delete: del } = useApi()
МетодОписание
get(action, params?)GET-запрос
post(action, params?, options?)POST-запрос
put(action, params?, options?)PUT-запрос
delete(action, params?)DELETE-запрос
buildUrl(action, params?)Собрать URL без запроса
javascript
const users = await get('security/user/getlist', { limit: 20 })
await post('security/user/create', { username: 'newuser' })

По умолчанию POST и PUT отправляют FormData. Для тела JSON передайте { json: true } третьим аргументом. Токен авторизации HTTP_MODAUTH (из MODx.siteId) добавляется автоматически. При ответе success: false метод бросает ошибку с полем data.

Свой роутер

useApi рассчитан на стандартный connector MODX. Если у компонента свой роутер, заведите локальный request.js — см. Собственный API-клиент.

usePrimeVueLocale

Локали PrimeVue: подписи фильтров DataTable, кнопки и заголовки DatePicker/Calendar.

javascript
import { getPrimeVueLocale } from '@vuetools/usePrimeVueLocale'
import { PrimeVue } from 'primevue'
import { getActiveTheme } from '@vuetools/useTheme'

app.use(PrimeVue, { ...getActiveTheme(), locale: getPrimeVueLocale() })
ФункцияВозвращаетОписание
getPrimeVueLocale(cultureKey?)objectЛокаль по коду; без аргумента — по MODx.cultureKey

Коды: de, en, es, fr, pl, ru, uk. Неизвестный код даёт английскую локаль. Локаль не реактивна: при смене языка без перезагрузки страницы передайте новый cultureKey или пересоздайте приложение.

useTheme

Активная тема оформления. Полностью — на странице Тема.

javascript
import { getActiveTheme } from '@vuetools/useTheme'
import { PrimeVue } from 'primevue'

app.use(PrimeVue, getActiveTheme())
ФункцияВозвращаетОписание
getActiveTheme(name?){ theme }Настройки темы для app.use(PrimeVue, …)
getThemeName(name?)stringИмя активной темы (aura или modx)

Без аргумента тема берётся из настройки vuetools.theme (значение отдаётся через window.VueTools), неизвестное значение → aura.