Алексей
если можно сократить код в разы.
Алексей
и быстродействие
Алексей
можно попробовать через процессор. но нафига?
уже проще тогда через getObject сделать
Dmitry
Даже если вы запустите событие, откуда это событие узнает предыдущий ресурс у которого надо брать цену?
Смотри, есть товар с ценой 100р, у него нет никаких товаров привязанных, есть товар второй товар, цена которого формируется в зависимости от предыдущего товара, при событии он берет из migx поля id этого товара берет сумму его и обновляет свою
Dmitry
уже проще тогда через getObject сделать
Я так и делаю, получаю через getobject и запускаю save доя нужного мне id, но это не помогает т.к событие не срабатывает походу, а просто обновляет данные в товаре
Dmitry
А мне как раз нужно, чтобы был запуск события
Алексей
при сохранении 1го или 2го товара?
Dmitry
в какой момент мы понимает какой товар дочерний?
При нажатии на кнопку сохранить, он проверяет, есть ли у товара заполненное поле tv в котором лежит id товара от которого может дависеть его стоимость, если нет, то оставляет свою цену, если есть, то берет цену этого товара и добавляет к себе и сохраняет
Алексей
ну. так в чем дело ??? у вас есть id и обьекты товаров. плюсанули и сохранили сразу же в плагине там же сразу.
Алексей
не понимаю почему вы прицепились к событию ДЛЯ ДРУГИХ товаров, если оно по сути лишнее даже.
Dmitry
не понимаю почему вы прицепились к событию ДЛЯ ДРУГИХ товаров, если оно по сути лишнее даже.
Ну так уже сделано, через событие и на этом завязано связь между другими ресурсами и товарами
Dmitry
Потому выход только через событие и нахожу
Алексей
вы ищите сложный путь, когда есть проще. если у вас там просто сложить 2 числа и записать в ресурс....
Алексей
тогда вместо getObject берите запускайте махину процессор... но это бред.
Dmitry
А если через процессор, то какой запускать, хотяб проверить он то запустит событие или нет?
Dmitry
Resource/update?
Dmitry
Но товаров около 10 таких, если сильная нагрузка, то точно буду пилить через getobject, но это так, для общего познания проверить хотяб
Алексей
Resource/update?
да если там msProduct то нужно указать класс. msProduct там подвязка сама сделается.
Dmitry
чет ты быстро сдался
Ну по сути ж мне всё объяснил, так что не сдался)
Dmitry
Для чего эти все пересохранения?
Ну потому что плагин работает на событие, вот и думал запускать событие для разных id
Dmitry
По которым прохожусь, там плагин не просто меняет цену
Dmitry
Он ещё с разными товарами взаимодействует
Dmitry
И с ресурсами
Dmitry
Поэтому и необходимость запускать событие именно
Roman
Задача не понятная, абстрактная.
Артур
Господа, я чего-то не понимаю. Есть сниппет AjaxForm, есть аналогичный класс. Насколько я понимаю сначала вызывается сниппет, в нём подключается класс и потом уже всё остальное. Если это так, то откуда в сниппете массив $scriptProperties? Его создает modx из переданных при вызове сниппета параметров?
Nikita
$scriptProperties = !empty(session_id()) ? @$_SESSION['AjaxForm'][$action] : $this->modx->cacheManager->get('ajaxform/props_' . $action);
Nikita
https://github.com/modx-pro/AjaxForm/blob/master/core/components/ajaxform/model/ajaxform/ajaxform.class.php#L103
Nikita
кажется херню какую-ту скинул, плохо прочитал вопрос
Nikita
но судя по классу выглядит так что сначала грузится класс, а потом обрабатывается сниппет
Nikita
а
Nikita
https://github.com/modx-pro/AjaxForm/blob/master/core/components/ajaxform/elements/snippets/snippet.ajaxform.php#L5
Nikita
загружается сниппет, он подгружает класс и дальше с ним работают
Nikita
щас где-то видел
Nikita
https://docs.modx.com/current/ru/extending-modx/snippets#chtenie-znacheniy-v-vashih-snippetah вот
Артур
https://docs.modx.com/current/ru/extending-modx/snippets#chtenie-znacheniy-v-vashih-snippetah вот
Ага, классно, тогда откуда там параметры которых я не передавал?)))
Артур
но которые есть по умолчанию?
Вероятно да, но непонятно где.
Алексей
вкладка параметры у снипета
Артур
В частности formSelector
Nikita
Nikita
https://github.com/modx-pro/AjaxForm/blob/master/core/components/ajaxform/model/ajaxform/ajaxform.class.php#L32
Nikita
камон, ты че не одной моей ссылки не открыл?
Артур
Nikita
морда наглая
Nikita
и судя по всему formSelector захардкожен по умолчанию, а не тянется из нсатроен modx, но переписывается $scriptProperties который прокидывается в сниппет
Артур
морда наглая
А смысл мне от ссылок на код, который я в данный момент переписываю))) Я все эти куски кода видел и без ссылок.
Артур
Артур
А если учесть то дальше он через регулярку вставляется, то надо было параметр называть formClass
Nikita
Да. И захардкожен паршиво. Если это селектор то надо было хардкодить .ajax_form, а не так ajax_form
через точку это класс, там скорей всего в js коде юзается getElementById
Nikita
поэтому ajax_form проходит
Nikita
хотя там походу полагаются на магию jquery
Nikita
даже интересно проверить
Артур
через точку это класс, там скорей всего в js коде юзается getElementById
Не юзается в js getElementById, единственная причина почему нет точки это вставка по регулярке, потому как если дать возможность устанавливать либо класс, либо id, то надо ещё одну регулярку писать.
Артур
хотя там походу полагаются на магию jquery
Вот это я как раз и выпиливаю.
Nikita
какие еще регулярки?
Артур
Эти.
Nikita
херня какая-та собачья
Артур
херня какая-та собачья
Может и так, это не я писал, это AjaxForm такой.
Nikita
да я знаю что не ты
Nikita
писал его вроде бы автор modx.pro
Артур
Для меня тоже загадка зачем так сложно. Проще же было бы просто в чанк параметры передать и всё.
Артур
Да, придётся ручками в каждую форму добавлять плейсхолдеры, но за то кодить меньше и гибкость выше))))
Nikita
и сломанная обратная совместимость
Евгений
Для меня тоже загадка зачем так сложно. Проще же было бы просто в чанк параметры передать и всё.
раньше был обязателен класс ajax_form у формы, потом вроде как было убрано, а код видимо остался
Артур
и сломанная обратная совместимость
Вот тут не понял, почему сломанная?
Артур
раньше был обязателен класс ajax_form у формы, потом вроде как было убрано, а код видимо остался
Сейчас без этого класса прекрасно работает, только стили не применяются стандартные.
Dmitry
да если там msProduct то нужно указать класс. msProduct там подвязка сама сделается.
чёт я попробовал запустить, но не прокатило, что-то не то что ль? $test = 3847; $fields['id'] = (int)$test; $fields['class_key'] = 'msProduct'; $fields['context_key'] = 'web'; $response = $this->modx->runProcessor('resource/update', $fields);
Алексей
$this->modx - почему $this? у вас класс там?