Как создавать опции msync из списка?
Есть простой список с опциями синхронизациями, нужно их все заполнить из него быстро.
Что пытался:
1) Через newObject но он вообще не находит объект опции, схему смотрел класс копировал. Пытался через $xpdo-> а так же $modx
Что пытался:
1) Через newObject но он вообще не находит объект опции, схему смотрел класс копировал. Пытался через $xpdo-> а так же $modx
$newMsPr = $xpdo->newObject('mSyncProductProperty');
$newMsPr->set('source', 'ТЕСТПРИКОЛ');
$newMsPr->set('type', 1);
$newMsPr->set('target', 'testprikol');
$newMsPr->set('active', 1);
$newMsPr->set('default', 0);
$newMsPr->set('is_multiple', 0);
$newMsPr->set('is_primary', 0);
$newMsPr->save();
2) Пытался с эмулировать запрос. Но получал лишь 401 ошибку. Выполнял в косноли<?php
function transliteCyrilic($value){
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i',
'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't',
'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch',
'ш' => 'sh', 'щ' => 'sch', 'ь' => '', 'ы' => 'y', 'ъ' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
);
$value = mb_strtolower($value);
$value = strtr($value, $converter);
$value = mb_ereg_replace('[^-0-9a-z]', '_', $value);
$value = mb_ereg_replace('[-]+', '_', $value);
$value = trim($value, '_');
return $value;
}
$chars = array("Объем, л", "Номенклатура");
$translated_arr = array();
$createUrl = 'https://example.com/assets/components/msync/connector.php/';
foreach ($chars as $char) {
$params = array(
'action' => 'mgr/property/create',
'id' => '',
'default' => '',
'source' => $char,
'type' => 1,
'target' => transliteCyrilic($char),
'is_multiple' => 0,
'is_primary' => 0,
'active' => 1
);
$myCurl = curl_init();
curl_setopt_array($myCurl, array(
CURLOPT_URL => $createUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params)
));
$response = curl_exec($myCurl);
echo var_dump($response);
die();
curl_close($myCurl);
}
die();
3) Сделал это всё на питоне, там авторизовывался в адмнке, но так же 401 ошибка.import re
from requests import Session
LOGIN_CONTEXT = "mgr"
RETURN_URL = "/manager/"
USERNAME = "ashdjkashldkfjhasldf"
PASSWORD = "sadkfas;lkdjfh;lasd"
LOGIN_URL = "https://example/manager/"
msync_coonector = 'https://example/assets/components/msync/connector.php/'
def main():
chars = {"Объем, л":"obem__l","Номенклатура":"nomenklatura"}
with Session() as session:
req = session.post(LOGIN_URL, data={"login_context": LOGIN_CONTEXT , 'returnUrl': RETURN_URL, 'username': USERNAME, 'password': PASSWORD, 'login': "1"})
for char_key, char_value in chars.items():
send_params = {
'action': 'mgr/property/create',
'id': '',
'default': '',
'source': char_key,
'type': 1,
'target': char_value,
'is_multiple': 0,
'is_primary': 0,
'active': 1
}
create_property = session.post(msync_coonector, data=send_params, timeout=60)
print(create_property.text)
if __name__ == '__main__':
main()
4) Пытался прям на месте через повторить запрос создания опции через chrome tools, но даже там получил ошибку 401, уверен что это из-за mod http auth Комментарии: 3
Получилось лишь с помощью автоматизации браузера сделать, что тоже был геморой, но проще, кому надо могу скинуть, делал через Automa. Но так и не решил нормальным способом.
В первом варианте вы не подключили сервис
$mSync = $modx->getService('msync', 'mSync', $modx->getOption('msync_core_path', null, $modx->getOption('core_path') . 'components/msync/') . 'model/msync/', array());
И дальше должен работать код.
Здравствуйте, возможно ли выгрузить остатки по складам в доп поля товара с «Моего склада»?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.