Николай Савин

Николай Савин

Был в сети 29 июня 2026, 12:35
Заказы принимаю
Что там пилить. Генерируешь произвольную строку пользователю. Отдаешь на фронт.
Теперь фронт каждый раз при авторизации подписывает запросы токеном. На базе него происходит проверка прав и выдача ответа. В отличие от куки — токен можно быстро, массово отозвать, сменить и так далее.
Совсем не об этом писал. В этом варианте VUE все равно внутри шаблона подключается.
Я использую VUE CLI. В таком варианте — в шаблон вообще ничего не подключается. Только JS файлик, в котором скомпилированная логика. JS смотрит в DOM дереве заранее указанный ID и заменяет этот DOM элемент на VUE компонент.
Виджетами я называю отдельные модули. По отношению ко VUE наверное так никто не говорит действительно. Но в целом называть какой то отдельный кусок интерактивного кода виджетом — нормально. Во VUE наверное корректнее писать компоненты.
В более менее крупном проекте может быть запросто десяток подключаемых VUE компонентов. У меня порой страница целиком — один большой VUE компонент.
Как работаю я, когда мне нужно вставить виджет VUE внутрь MODX

Использую VUE CLI с компонентами
Создаю отдельный проект. Страницу index.html забираю с сайта, чтобы иметь нужный дизайн, со всеми стилями и скриптами.
Далее готовлю нужный мне VUE виджет. Компилирую бандл, и получившийся JS файл добавляю в MODX проект.

В шаблоне MODX — там где должен быть виджет пишу
<div id="vue-widjet-one"></div>
А VUE распознав ID заменит этот блок на подготовленный виджет.
$response = $modx->runProcessor('security/login', $data);
        if ($response->isError()) {
            $modx->log(modX::LOG_LEVEL_ERROR, print_r($response->response, 1));
        } else {
            //User отдельно необходим потому-что процессор не возвращает юзера и не присваивает его автоматом объекту $modx->user
            //В данном случае нет смысла дополнительно проверять права, потому что процессор уже все проверки провел.
            $user = $modx->getObject('modUser', array('username' => $username));
            if ($user) {
                $modx->user = $user;
                $modx->initialize('mgr');
            }
        }
Александр, а вот взялись бы за изучение существующих компонентов и дополнение информации о них.
Смотрите сами, сколько пользы можно принести сообществу
  • Не у каждого компонента есть достоверное описание, не всегда понятно для чего он, что умеет, где можно применить и какую пользу получить
  • Не о каждом компоненте есть более менее приличная заметка здесь. Не удивлюсь если о половине вообще ничего не написано, или написано очень кратко
  • Какие-то компоненты заброшены, и есть смысл составить список тех, чье обновление требуется
  • По каким то компонентам здесь на форуме много заданных, мало раскрытых вопросов. Можно составить контент-план по раскрытию вопросов. Необязательно самому писать. Для начала можно просто составить список тем, которые было бы неплохо раскрыть. Уверен ребята заметят активность и подключатся
На самом деле, при глубоком погружении оказалось, что этот issue и вызвал поломку.
Связь Заказа и Адреса сделана довольно странно. Обычно Подчиненную модель (Адрес) привязывают к первичному ключу Главной модели (Заказа). И тогда Композитная связь работает очень хорошо.

В минишопе Василий же, в свое время почему-то сделал наоборот. Здесь Адрес является основной записью, к которой привязывается заказ. Решение мягко говоря спорное.
И я не могу переделать, потому что придется менять структуру полей. Это мажорное обновление, ломающее работу сайтов и компонентов. Внесу в план работ на будущее.

Пока откатываю реализацию твоего issue назад и будем решать удаление адреса заказа костылями.