OXBOX Help

Что делать? Куда писать то?

Куда писать?

Вот ты вроде все скачал. Вроде все сделал. Открыл Docker проект и... Куда че писать не знаешь. Я разделяю твои чувства. Структура вызывает вьетнамские флешбэки. Где что лежит не понятно.

Примерно вот так сейчас выглядит твоя IDE

image_11.png

Ты взял issue, создал ветку а... что в проекте менять то?

Если ты читаешь это, то маловероятно, что тебя отправили чинить сразу ядро. А потому вся твоя работа сейчас находится внутри папки core/public-app. Именно тут стоит сделать

git fetch git checkout [Твоя новая ветка]

С чего начать?

Допустим задача заключается в том, что нужно поправить выдачу списка клиентов. К примеру нам нужно заменить в ФИО пробелы на нижнее подчеркивание. Давай посмотрим что делать, чтобы пошагово разобраться во всем.

Сначала тебе нужно получить запрос. Ты можешь перейти на нужную страницу, открыть консоль разработчика/Network и глянуть запросы, которые отправляет fronend

image_12.png

Ты можешь сразу глянуть сам запрос перейдя в payload

image_13.png
{ "object": "clients", "command": "get", "data": { "context": { "block": "list" }, "limit": 20, "page": 1 }, "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MiwiaXAiOiI0Ni4zMC40NS4xMDQiLCJlbWFpbCI6InN1cHBvcnRAb3hib3gucnUiLCJyb2xlX2lkIjoxfQ.pC5Dvf3xqPbwHgGcGBADpBB7KyMWMBX-Q6H-PnPX08s" }

Исходя из него понятно, что мы пытаемся получить список клиентов обращаясь к команде get у объекта clients. Ну и определяем некоторые дополнительные данные (контекст) в поле data.

Что происходит?

Да, Это системная команда. Давай посмотрим что происходит с запросом, открыв файл core/router.php.

Все потихоньку встает на свои места. Тут мы берем JSON из запроса

image_14.png

Тут какая-то валидация

image_15.png

Тут какие-то схемы команды грузят

image_16.png
image_17.png
image_18.png

Дальше идет логика маршрута запроса. Мы видим, что формируются следующие пути

$defaultCommandPath # Пусть к default команде (по умолчанию) $customCommandDirPath # Путь к custom команде (не стандартной) $commandPrefixPath # Префикс - скрипт, который выполниться до стандартной или custm команды $commandPostfixPath # Постфикс - соответственно после ее выполнения

Так как в запросе указана команда get, то пусть к этой стандартной системной команде будет валиден и порядок выполнения запроса будет следующий:

  1. prefix.php (Если есть)

  2. get.php

  3. postfix.php (Если есть)

Реализацию команды get найти просто. Она лежит в core/core/default-commands/get.php. И заглянув в нее - все будет сводиться по сути к mysql запросу.

Решение

Именно так. Давай сосредоточимся на файле postfix. Откуда он вообще вызывается? Если мельком просмотреть код, то можно выяснить: Из core/system-app/custom-commands/clients/get/postfix.php или core/public-app/custom-commands/clients/get/postfix.php. Давай заглянем во второй и обнаружим, что это поле заполняется именно тут (16 строка)

image_19.png

Бинго. Осталось изменить файл и залить все на гит

25 июня 2025