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

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

Был в сети 37 минут назад
Заказы принимаю
Что там пилить. Генерируешь произвольную строку пользователю. Отдаешь на фронт.
Теперь фронт каждый раз при авторизации подписывает запросы токеном. На базе него происходит проверка прав и выдача ответа. В отличие от куки — токен можно быстро, массово отозвать, сменить и так далее.
Совсем не об этом писал. В этом варианте 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 назад и будем решать удаление адреса заказа костылями.