Всего 125 684 комментария

Евгений Шеронов
24 мая 2021, 09:55
+2
Спасибо!)

Интересный подход — нужно попробовать.
В комментах чуть поделюсь кодом:
<?php
// в начале файла /assets/components/yandexmarket2/connector.php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Authorization, Cookie, Content-Type, Accept, modAuth, modCookie');
header('Access-Control-Allow-Methods: OPTIONS, HEAD, POST, GET, PUT, DELETE');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    die; //браузеры уже очень давно перед каждым запросом отправляют OPTIONS для проверки CORS
}
if (isset($_SERVER['HTTP_MODCOOKIE'])) {
    //а тут уже строка в таком формате приходит: "MODSESSID=aaaaa; PHPSESSID=aaaaa"
    $modCookie = array_map('trim', explode(';', $_SERVER['HTTP_MODCOOKIE']));
    foreach ($modCookie as $cookie) {
        list($key, $value) = explode('=', $cookie, 2);
        $_COOKIE[$key] = $value;
    }
}
Этот код у меня только в dev ветке. Людям в продакшн он уже не попадает)

Зачем усложняешь?
Действительно, но в где-то явно может быть иначе. Видел, что вообще по умолчанию PHP 5.4, в /usr/bin/ только один php. А нормальный лежит тут: /opt/php70/bin/php

А для чего такое решение? Чем не устроило то что есть в xPDOSimpleObject например?
Как раз чтобы не привязывать логику к конкретным xPDO объектам. Ну и они не подходят под PSR-4.
Идея была в том, что компонент не должен особо знать, что там подсунуто.
В идеале от этих объектов требовалось имплементация методов save, toArray и get-set для свойств.
Надеюсь, что легко можно будет портировать интерфейс хоть под Laravel, там тоже ActiveRecord модель, которую можно будет смаппить с моделями из компонента)

А еще всегда можно прислать PR
Найду когда-нибудь время и поэкспериментирую с предложенным функционалом, замерю разницу.
Илья Уткин
24 мая 2021, 08:03
0
Админки на текущий момент нет. Не думал, что кому-то потребуется читать все сообщения)
Постараюсь в следующей версии добавить.
Николай Савин
24 мая 2021, 06:56
+1
Слушай я по рабочему процессу решил отдельную ветку написать. Интересно стало.
Получается у тебя нода крутится на сервере, код ты пишешь локально?
Я так понял — при написании кода у тебя срабатывает автодеплой, нода на сервере подхватывает изменения и сразу же их показывает с перезагрузкой страницы? Это прямо в админке происходит? или ты отдельную страничку завел для тестов?
Николай Савин
24 мая 2021, 06:53
+2
Уф. Вроде осилил. Не зря заказывал — спасибо порадовал.

С заголовком modAuth проблем нет, но куки приходится прокидывать в кастомном заголовке modCookie (предварительно разрешив его политикой Access-Control-Allow-Headers), который уже на сервере обрабатывается и добавляется в PHP массив $_COOKIE. После чего запрос успешно авторизовывается и возвращает данные из процессоров.
Интересный подход — нужно попробовать. Я в последнее время много локально со VUE и Реактом работаю и как то чаще велосипед с какими-нибудь токенами изобретаю. Ну и плюс CORS на сервере настраиваю.

MODSESSID, PHPSESSID. Может кто глубоко погружался, зачем нам два разных ID сессии?)
Это все чтобы кто-попало в MODX не приходил. Только истинные любители садо-мазо программирования.
Если не ошибаюсь MODSESSID для аутентификации в коннекторах админки да?

/usr/bin/php7.4 ~/www/core/components/yandexmarket2/cron/generate.php
Зачем усложняешь?
php7.4 ~/www/core/components/yandexmarket2/cron/generate.php
Напомню, что для сгенерированных MODX-классов (которые от xPDOSimpleObject) сделал свои proxy-классы Pricelist, Field и т.д, наследуемые от базового абстрактного.
А для чего такое решение? Чем не устроило то что есть в xPDOSimpleObject например?

Возможно, этот механизм нужно будет внедрить в miniShop2 (там рефлексия не нужна, а просто хватит проверки, все ли поля были получены для этих объектов из базы и засеттить их в соответствующие свойства).
Ох Женя это нехилый такой мажорный апдейт получится. Только не скоро у нас уже miniShop v3.0 запланирован с гораздо более простыми изменениями, которые нужны в первую очередь. Но вообще интересно. Я бы почитал исходники на предмет внедрения. А еще всегда можно прислать PR
Артур
23 мая 2021, 14:07
0
В обоих файлах стоит восклицательный знак на 2-й строке
prnt.sc/13auxvf
Артур
23 мая 2021, 13:54
0
Алексей, а теперь как понять, который работает?
Alexey
23 мая 2021, 11:49
0
На сайте jquery аж два раза подключен

prnt.sc/13aozdd
prnt.sc/13ape7r

а вы ещё один зачем-то подключаете, да ещё такой древний (1.11.0)
Артур Шевченко
23 мая 2021, 11:14
0
Ну в консоли браузера я этого файла не нашёл. Форма не отправляется. Страница перезагружается. В консоли ошибка ajaxSubmit is not a function, так что рекомендую переподключить.
Артур
23 мая 2021, 11:02
0
Артур, спасибо за ответ!
Но вроде подключено!
<img src="" />
Lori
23 мая 2021, 10:01
0
да, уже в сниппете нашел строку формирования url и удалил $port
Артур Шевченко
23 мая 2021, 09:03
0
По-моему ты jQuery не подключил.
Сергей
21 мая 2021, 18:25
0
А какая админка у дополнения reMessages? По проекту еще нужен функционал в админке поиск по «Дата, Имя пользователя, сообщения»
Артур Шевченко
21 мая 2021, 11:38
0
Да, правильно, но в случае если клиент сайт покинул, уведомления ему не нужны.
Александр
21 мая 2021, 11:32
0
Спасибо Алексей!!! Ошибся в схеме. Вот прям хочется картину заказать: «Сначала прочти логи, потом задавай вопросы» и дарить людям. Сегодня например себе)))
Роман
21 мая 2021, 11:08
0
Я правильно понял, что это будет работать, только если клиент находится на сайте?
Роман
21 мая 2021, 10:16
0
Сумбурно написано.
$filter[] = "dateend > '".$date_today."'";
Наумов Алексей
21 мая 2021, 08:56
+1
В примере из статьи это таблица modx_electrica_items

Вероятнее всего, у вас ошибка в схеме, иных причин, почему таблица не создалась придумать сложно.

Стоит посмотреть в логах modx, может быть там ошибка написана.
Александр
21 мая 2021, 07:59
0
Здравствуйте! Я новичок в ModX. Создаю свою табличку по данной статье и после нажатия на кнопку Create Table таблички в базе данных не обнаруживаю. Как называется таблица в базе данных в этом примере?