Почему я не могу сохранить данные в 2 новых поля при создании заказа?
При создании заказа, в два поля добавляются данные, но получается так что у меня добавляются и сохраняются дданые лишь в последний стоящий в коде, а не в оба. Все данные работают, если всё пробовать в консоли всё великолепно работает.
$msOrder->set('myfield', $fielddata);
$msOrder->set('myfield2', $fielddata2);
$msOrder->save();
Пытался и так$msOrder->set('myfield', $fielddata);
$msOrder->save();
$msOrder->set('myfield2', $fielddata2);
$msOrder->save();
И разделял даже плагины на отдельные куски, то есть в каждом плагине было по 1 сохранению, но всё так же заполняется только последний, хотя данные для обоих. Комментарии: 15
А до этого вообще в самое последнее поле не добавлялись данные, было 2 поля, но сохранялось всё в предпоследний. Лишь после того как я его сделал видимым для админки, то есть в самом заказе он теперь тоже виден, потом стал заполнятся лишь он последний
Как мне сохранить данные в оба поля? они все сделаны для msOrder, плагин на событие «msOnCreateOrder», я делаю что-то не так? потому что в консоли всё работает, сохраняет отлично, и эти же данные есть в плагине, я проверял
Наверное стоит показать реальный код плагина целиком.
Я даже уже расширил класс, и добавил просто даже текстом
$msOrder->set('test', 'test1');
$msOrder->set('test3', 'test2');
у меня всё равно данные записываются только в последнее поле установленное в коде
Скорее всего опечатка в плагине расширения
А какой такой тип опечатки может такое сделать? в консоли всё работает да же если добавлять текст, ошибки не возникают. Всё что я хотел добавить в свои поля они есть и работает в плагине, я всё проверял.
<?php
switch ($modx->event->name) {
case 'msOnCreateOrder':
$userId = $order->get('user_id');
$user = $modx->getObject('modUser', array('id' => $userId));
if (is_object($msOrder) && is_object($user)) {
$profile = $user->getOne('Profile');
try {
$qtOfFinishedOrders = $profile->get('finishedorders');
if($qtOfFinishedOrders){
$qtOfFinishedOrders = (int) $qtOfFinishedOrders;
if($qtOfFinishedOrders >= 5){
$isRegularCustomer = $msOrder->get('regular_customer');
if(!$isRegularCustomer){
$msOrder->set('regular_customer', 1);
}
}
}
}
catch(Exception $e) {
$modx->log(1, $e->getMessage());
}
$dfaultData = 'random';
$dfaultData1 = 'random1';
$msOrder->set('def_data', $dfaultData);
$msOrder->set('def_data1', $dfaultData1);
$msOrder->save();
}
break;
}
$msOrder откуда у вас взялся?
причем в самом начале использовали $order
disk.yandex.ru/i/bPyW8AaKaag5mA
Можно сказать вот вам и опечатка.
причем в самом начале использовали $order
disk.yandex.ru/i/bPyW8AaKaag5mA
Можно сказать вот вам и опечатка.
когда я ставлю $order, то я не могу получить те данные которые нужны, а когда $msOrder то получаю что нужно, и плюс я веlь мои поля повесил на msOrder
Вот вызов плагина
$response = $this->ms2->invokeEvent('msOnCreateOrder', array(
'msOrder' => $msOrder,
'order' => $this,
));
Как можно заметить в плагине есть обе переменные. msOrder это объект заказа, order — это сам класс обработчик заказа
Получается в документации не дописали про msOrder?
docs.modx.pro/komponentyi/minishop2/razrabotka/sluzhbyi/zakaz
Это к слову про эти msOnBeforeValidateOrderValue и msOnValidateOrderValue, как с ними работать, там тоже ничего не написано
docs.modx.pro/komponentyi/minishop2/razrabotka/sluzhbyi/zakaz
Это к слову про эти msOnBeforeValidateOrderValue и msOnValidateOrderValue, как с ними работать, там тоже ничего не написано
Получается так. Добавлю.
Ни у кого нет идей, как такое может быть?
1. попробовать на msOnBeforeCreateOrder
2. попробовать так:
2. попробовать так:
$msOrder->fromArray([
'def_data' => $dfaultData,
'def_data1' => $dfaultData1,
]);
$msOrder->save();
Не получается. Всё так же сохраняется лишь крайне созданное поле
<?php
switch ($modx->event->name) {
case 'msOnBeforeCreateOrder':
$userId = $order->get('user_id');
$user = $modx->getObject('modUser', array('id' => $userId));
$isRegularCustomerField = 0;
// $modx->log(1, 'ORRRRRRRRRRRRRRRRRRRR');
if (is_object($msOrder) && is_object($user)) {
$profile = $user->getOne('Profile');
try {
$qtOfFinishedOrders = $profile->get('finishedorders');
if($qtOfFinishedOrders){
$qtOfFinishedOrders = (int) $qtOfFinishedOrders;
// $modx->log(1, $qtOfFinishedOrders);
if($qtOfFinishedOrders >= 5){
$isRegularCustomer = $msOrder->get('regular_customer');
if(!$isRegularCustomer){
$isRegularCustomerField = 1;
}
}
}
}
catch(Exception $e) {
$modx->log(1, $e->getMessage());
}
$defval = 'test1';
$defval2 = 'test2';
$updateOrderFromArray = array(
'defval' => $defval,
'defval2' => $defval2
);
if($isRegularCustomerField){
array_push($updateOrderFromArray, 'regular_customer', 1);
}
$msOrder->fromArray($updateOrderFromArray);
$msOrder->save();
}
break;
}
странно, чудеса можно сказать, ну как вариант если поменять очерёдность переменных, посмотреть что будет.
в логах сервака и модх ничего нет?
<?
$updateOrderFromArray = array(
'defval2' => $defval2,
'defval' => $defval
);
А как вы расширили модель заказа?в логах сервака и модх ничего нет?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.