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

Артем
22 марта 2021, 20:18
+1
НО не исключает к сожалению по ID
Этот код и не должен что-то исключать. Результирующий массив лежит в переменной $result, в ней и нужно смотреть. $array_test уже не нужен.

{foreach $result as $id => $value}
  id: {$id} - count: {$value}
{/foreach}
Andrey
22 марта 2021, 20:14
0
в любом случае спасибо! Нашел другой вариант, не связанный с fenom :D
Andrey
22 марта 2021, 20:07
0
Приветствую! Спасибо за ответ, складывает действительно, НО не исключает к сожалению по ID повторяющиеся элементы, т.е. получается вот так:
id: 1 - count: 2
id: 2 - count: 1
id: 2 - count: 8
получается предыдущая 2-ка никуда не делась!
Антон Тарасов
22 марта 2021, 17:59
0
Насколько помню можно через CSS для класса контейнера капчи переопределить местоположение
Aleksanders
22 марта 2021, 11:39
0
Yandex приостановил выдачу API. Как заставить автоматически переводить сайт?
Андрей Степаненко
22 марта 2021, 10:45
0
То же пробовал, аналогичный вывод получился…
Андрей Степаненко
22 марта 2021, 10:44
0
Ах да забыл про это написать.
Стартую изолированный Modx, а не из под того же скрипта который его запустил
Пишет все в логи, а уже из логов читаются сообщения.
Сергей Шлоков
22 марта 2021, 10:43
0
Есть вариант как мокнуть xpdo?
В этом как раз и жопа. Вместо дополнительного уровня абстракции (как это сделано в Evolution — $modx->db) modX тупо наследуется от xPDO. И в итоге хрен ты чего сделаешь.
Андрей Степаненко
22 марта 2021, 10:40
0
MODX плохо поддаётся юнит-тестированию.

Из за этого и встроил PHPunit в Crontabmanager
Ибо чтобы настроить PHPUnit для modx мозг взорвется пока это сделаешь.

crontabmanager использует твою наработку по запуску скриптов на бэкенде (спасибо)))).
За счет чего полноценно стартуют тесты в Modx.
Андрей Степаненко
22 марта 2021, 10:35
0
Codeception — особо не знаком с ним. Можно попробовать встроить и его. Разницы то особо нету какой фреймворк запускать из под crontabmamager
Андрей Степаненко
22 марта 2021, 10:33
0
При интеграции с разными сервисами частенько что то ломается.
Не совсем понятно, зачем нужны тесты рабочего сайта по расписанию. Обычно тестируют разработку перед деплоем. Протестировал — замёрджил — задеплоил.
Банальный ответ: Для автоматического тестирования)))))))))))
Сергей Шлоков
22 марта 2021, 10:33
0
MODX плохо поддаётся юнит-тестированию. Поэтому юзаем Codeception.
Сергей Шлоков
22 марта 2021, 10:29
0
Не совсем понятно, зачем нужны тесты рабочего сайта по расписанию. Обычно тестируют разработку перед деплоем. Протестировал — замёрджил — задеплоил.

Ну и по поводу вышеописанных примеров тестов. Они нарушают все базовые правила юнит-тестирования — обращения к файловой системе и базе данных недопустимы. Их обычно мокают. Это уже больше функциональное тестирование. И для этого есть шикарный фреймворк Codeception.
Алексей Шумаев
22 марта 2021, 09:12
0
Как вариант, если речь идёт о товарах: сделайте отдельный сервер для товарной БД с api + интерфейс по управлению товарами для менеджеров. Фронт на js, бэк на чём угодно, на том же slim'е.
Синхронизируйте с ним сколько угодно сайтов.
Роман
22 марта 2021, 06:38
0
Первый вариант приемлемый, только с базой не понятно как быть. В течении в базу пишутся разные данные, статистика, заказы, да и мало ли еще что.
Артур Шевченко
21 марта 2021, 20:30
0
Да это не оказия, это уже пердимонокль)))
Артур Шевченко
21 марта 2021, 20:20
0
Migx хранит данные в json, поэтому стандартными средствами никак. Вам нужно написать свой сниппет, который будет получать поле, преобразовывать его в массив, сортировать массив и возвращать отсортированный массив.
Александр Туниеков
21 марта 2021, 15:29
0
составить запрос основываясь на modUserGroupMember
{'getTable' | snippet : [
    'table'=>[
        'class'=>'modUserGroupMember',
        'actions'=>[
            'create'=>[
            ],
            'update'=>[
                'icon' => 'fa fa-edit',
            ],
        ],
        'pdoTools'=>[
            'class'=>'modUserGroupMember',
            'leftJoin'=>[
                'modUserProfile'=>[
                    'class' => 'modUserProfile',
                    'on' => 'modUserProfile.internalKey = modUserGroupMember.member',
                ],
            ],
            'where'=>[
                'modUserGroupMember.user_group'=>2,
            ],
            'select'=>[
                'modUserProfile'=>'*',
            ],
        'decodeJSON'=>1,
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
                'internalKey'=>[
                    'label'=>'data- 1 добавляем в data-индификатор строки, чтобы по нему можно было искать редактируемое значение fullname',
                    'data'=>1
                    ],
                 'fullname'=>[
                    'class'=>'modUserProfile',
                            'edit'=>[
                                'type'=>'text',
                                'search_fields'=>['internalKey '=>'internalKey', ],
                            ],
                    ], 
                 'oc_name'=>[
                     'label'=>'extended поле не редактируется',
                     'edit'=>['type'=>'view']
                    ],
            ],
    ],
]}