Евгений Лазарев

Евгений Лазарев

С нами с 06 августа 2018; Место в рейтинге пользователей: #436
Евгений Лазарев
04 июля 2023, 18:32
0
Подскажите пожалуйста почему поле может не получать данные после повторной перезагрузки страницы?
<?php
switch ($modx->event->name) {
    case "OnMODXInit":
        $map = array(
            'modUserProfile' => array(
                'fields' => array(
                    'building' => null,
                    'layer' => null,
                ),
                'fieldMeta' => array(
                    'building' => array(
                        'dbtype' => 'varchar',
                        'precision' => '255',
                        'phptype' => 'json',
                        'null' => true,
                    ),
                    'layer' => array(
                        'dbtype' => 'varchar',
                        'precision' => '255',
                        'phptype' => 'json',
                        'null' => true,
                    ),
                ),
            ),
        );

        foreach ($map as $class => $data) {
            $modx->loadClass($class);

            foreach ($data as $tmp => $fields) {
                if ($tmp == 'fields') {
                    foreach ($fields as $field => $value) {
                        foreach (array('fields', 'fieldMeta', 'indexes') as $key) {
                            if (isset($data[$key][$field])) {
                                $modx->map[$class][$key][$field] = $data[$key][$field];
                            }
                        }
                    }
                } elseif ($tmp == 'composites' || $tmp == 'aggregates') {
                    foreach ($fields as $alias => $relation) {
                        if (!isset($modx->map[$class][$tmp][$alias])) {
                            $modx->map[$class][$tmp][$alias] = $relation;
                        }
                    }
                }
            }
        }
        break;
    
    case "OnUserFormPrerender":
        if (!isset($user) || $user->get('id') < 1) {
            return;
        }
        
        if (!$modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) {
            $buildings = [];
            $layers = [];
            if ($user->Profile->building){
                foreach (json_decode($user->Profile->building) as $id){
                    if (!$scBuilding = $modx->getObject('scBuilding', ['id' => $id, 'active' => true])) continue;
                    $buildings[] = (object)$scBuilding->toArray();
                }   
            }
            var_dump($user->Profile->email); var_dump($user->Profile->layer); die();
В данном случае при первой перезагрузке страницы выведется и email и layer, при повторной же emal выведется а свое поле будет null
B так каждый раз пока кэш не очистишь
Евгений Лазарев
04 июля 2023, 13:52
0
Код на событие
case "OnUserFormPrerender":
        if (!$modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) {
            $data['building'] = $user->Profile->building ?: '';

            $modx->controller->addHtml("
                <script type='text/javascript'>
                    MODx.combo.Building = function(config) {
                        config = config || {};
                        Ext.applyIf(config,{
                            xtype: 'superboxselect',
                            allowBlank: false,
                            msgTarget: 'under',
                            allowAddNewData: true,
                            addNewDataOnBlur: false,
                            resizable: true,
                            name: config.name || 'building',
                            anchor: '100%',
                            displayField: 'name',
                            valueField: 'id',
                            typeAhead: true,
                            store: new Ext.data.JsonStore({
                                id: (config.name || 'building') + '-store',
                                root: 'results',
                                autoLoad: true,
                                autoSave: false,
                                totalProperty: 'name',
                                fields: ['id','name'],
                                url: '/assets/components/svgcreator/connector.php',
                                baseParams: {
                                    action: 'mgr/floor/getlist',
                                    key: config.name,
                                },
                            }),
                            extraItemCls: 'x-tag',
                            expandBtnCls: 'x-form-trigger',
                            clearBtnCls: 'x-form-trigger',
                            renderTo: Ext.getBody(),
                            editable: true,
                            triggerAction: 'all',
                            mode: 'remote',
                            hideMode: 'offsets',
                            pageSize: 20,
                            listeners: {
                                newitem: function(bs,v, f) {bs.addItem({tag: v});},
                            },
                        });
                        config.name += '[]';
                        MODx.combo.Building.superclass.constructor.call(this,config);
                    };
                    Ext.extend(MODx.combo.Building,Ext.ux.form.SuperBoxSelect);
                    Ext.reg('modx-combo-building',MODx.combo.Building);
                
                    Ext.ComponentMgr.onAvailable('modx-user-tabs', function() {
                        this.on('beforerender', function() {
                            var leftCol = this.items.items[0].items.items[0].items.items[0];
                            
                            leftCol.items.insert(12, 'modx-user-building', new MODx.combo.Building({
                                id: 'modx-user-building',
                                name: 'building',
                                fieldLabel: 'Объекты',
                                xtype: 'modx-combo-building',
                                anchor: '100%',
                                maxLength: 100,
                                value: {$data['building']},
                            }));
                        });
                    });
                </script>
            ");
        }
        break;
Евгений Лазарев
12 октября 2022, 20:32
0
Не знаю чем мне это поможет но спасибо
Евгений Лазарев
29 сентября 2022, 11:09
0
Роман, добрый день. Это какая то накрутка рейтинга или шутка? С таким успехом я вам отвечу: «Спасибо, кушал пюре с котлетой». Вопрос был явно и ясно написан.
Евгений Лазарев
27 июля 2022, 14:22
0
Артур, ну если вам нужно еще детальнее, то пускай будет так, чтобы было понятнее что это синтаксис феном:
{$resp->material->wall->width}
Если вы не знаете ответа, зачем спамить в тикете? Вопрос был поставлен ясно и четко.
Евгений Лазарев
26 июля 2022, 22:46
0
Кэп, можно). Но вопрос был не об этом.
Евгений Лазарев
26 июля 2022, 22:20
0
Вообще не понял ваш вопрос. Но все равно отвечу — вывод на странице. Он в этом участвует.
Евгений Лазарев
26 июля 2022, 14:18
0
Точка ставится при массиве. Так что в ответ знакомое: «Cannot use object of type stdClass as array...»
Евгений Лазарев
22 июля 2022, 18:22
0
При создании TV поля типа «Изображение» и заполнении его (не важно вызывали его содержимое на странице или нет) страница заканчивается 500. Ошибка где-то в методе parseProperties core/src/Revolution/Sources/modMediaSource.php
Евгений Лазарев
05 июля 2022, 20:15
0
Авторизация для каждого из приложений кто захочет воспользоваться rest дабы дать возможность с ним взаимодействовать только определённым.
Евгений Лазарев
27 июня 2022, 13:31
0
Почитал я все тут (api, json файлы и просто файлы). Самым простым способом будет из этого api. Его писать не охото было.
Я думал, что если сайты лежат на одном серваке, то можно будет подключиться из одного проекта к index.php другого и все — мол есть объект $modx_old — вращай им как хочешь.
Но если выбора иного нет, то проще будет тогда на старом сайте работать из консоли и на новом делать записи через rest, Таким образом не придется с 2х сторон писать обработчики (грубо говоря rest подключить времени нужно меньше).
Евгений Лазарев
22 февраля 2022, 15:25
0
Установил плагин — у него потрясающий функционал. С какими проблемами столкнулся:
1) мало документации.
2) Так и не понял разницу CrontabManagerHandlerFile и CrontabManagerHandler.
3) При активации и деактивации появляются ошибки и она становится невозможной (выполнил опытным путем удаляя задание через ispPanel)
4) когда все же все заработало увидел ряд ошибок:
PHP Fatal error:  Can't use method return value in write context in /var/www/site.ru/core/components/crontabmanager/model/crontabmanager/crontabmanagertasklog.class.php on line 10
Данные ошибки связаны с этим файлом и crontabmanagertask.class.php на строках 99,222,231 (везде где написано if (EMPTY($this->get('tratata')))). Почему-то не нравится ему empty. При этом у меня php74 а запускатеся под 7.2
Евгений Лазарев
20 января 2022, 00:39
0
Да я знаю. Просто я топлю за оригинальный файл, к тому же я пока не смог придумать ситуацию где бы для input[type=radio] нужно было применять действия, которые написаны в файле. Даже для delivery и payment сделаны соответствующие исключения. По факту на мой взгляд написано верно, но не для такого типа input. Есть ли возможность указать исключение для них?
Евгений Лазарев
19 января 2022, 18:49
0
Добрый день уважаемые разработчики. У меня к вам вопрос: есть ли возможность в новой версии усовершенствовать код в default.js minishop2.Order.add
$field.val(response.data[key]).removeClass('error').closest(miniShop2.Order.inputParent).removeClass('error');
Дело в том что иногда нужно добавить свои radio, но изза этого кода получается что всем radio в аттрибут value пишется новое значение.
Евгений Лазарев
10 декабря 2021, 18:20
0
Вроде подходит, только какой то плагин устаревший нужно подключать, намучился я с ним и бросил эту затею.
Евгений Лазарев
08 декабря 2021, 18:59
0
Добрый день. Подскажите а есть возможность в migx делать зависимость полей. К примеру у меня 2 поля:
1) Продукты типа listbox с Input Option Values:
@SELECT CONCAT(pagetitle,' - ',id), id FROM modx_site_content WHERE template=6 AND deleted=0
2) Модификации типа listbox с Input Option Values:
@SELECT CONCAT(name,' - ',id), id FROM modx_msop_modifications WHERE active=1 AND rid=[[+id]]
То есть опции модификации зависят напрямую от выбранного продукта?
Евгений Лазарев
19 ноября 2021, 12:29
0
Виталий подскажите пожалуйста с версией 1.2.1 почему то для выгрузок в 1000 и более товаров стала прерываться на этапе загрузки изображений с 500 error. В общем логе ничего. Ответ 1С
Отправка запроса на авторизацию.
Отправка запроса на инициализацию, для определения версии обмена данных.
{ОбщийМодуль.Б_ОбщиеПроцедурыИФункцииОбменаССайтом.Модуль(2462)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки)
Соединение.ОтправитьДляОбработки(ПолноеИмяФайла, СокрЛП(ПараметрыЗапроса), ИмяФайлаОтвета, СокрЛП(Заголовки));
по причине:
Ошибка при выполнении файловой операции 'assets/components/msync/1c_exchange.php?type=catalog&mode=file&filename=import_files/116327_1.jpg&'
по причине:
Ошибка работы с Интернет: внутренняя ошибка сервера (500). <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at
webmaster@yahont.online to inform them of the time this error occurred,
and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>

по причине:
Ошибка работы с Интернет: внутренняя ошибка сервера (500)
Произошла ошибка на стороне сервера. Не получен статус завершения операции. Файл не отправлен (C:\Users\Пользователь\AppData\Local\Temp\3 001 078 109\webdata\000000002\goods\0\import_files\116327_1.jpg).
Ответ сервера:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at
webmaster@yahont.online to inform them of the time this error occurred,
and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>

Ответ сервера: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at
webmaster@yahont.online to inform them of the time this error occurred,
and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>
Подскажите в чем может быть проблема. Все лимиты увеличены до упора.
Евгений Лазарев
16 октября 2021, 20:40
0
Попробуйте, если не верите. Просто в настройках оплаты сотрите в параметре доп цены все символы. Дело в том что ниже по коду идет
$cost += $add_price
. А поскольку $add_price = "", то в лог пишется ошибка, что не корректная операция происходит. Заказ создается без сбоев нормально, но в лог +2 ошибки, поскольку во время создания заказа getCost() вызывается 2 раза.