Почему я не могу сохранить данные в 2 новых поля при создании заказа?

При создании заказа, в два поля добавляются данные, но получается так что у меня добавляются и сохраняются дданые лишь в последний стоящий в коде, а не в оба. Все данные работают, если всё пробовать в консоли всё великолепно работает.

$msOrder->set('myfield', $fielddata);
            $msOrder->set('myfield2', $fielddata2);
            $msOrder->save();
Пытался и так
$msOrder->set('myfield', $fielddata);
             $msOrder->save();
            $msOrder->set('myfield2', $fielddata2);
            $msOrder->save();
И разделял даже плагины на отдельные куски, то есть в каждом плагине было по 1 сохранению, но всё так же заполняется только последний, хотя данные для обоих.
Vladimir
13 января 2023, 08:57
modx.pro
462
0

Комментарии: 15

Vladimir
13 января 2023, 08:59
0
А до этого вообще в самое последнее поле не добавлялись данные, было 2 поля, но сохранялось всё в предпоследний. Лишь после того как я его сделал видимым для админки, то есть в самом заказе он теперь тоже виден, потом стал заполнятся лишь он последний
    Vladimir
    13 января 2023, 10:10
    0
    Как мне сохранить данные в оба поля? они все сделаны для msOrder, плагин на событие «msOnCreateOrder», я делаю что-то не так? потому что в консоли всё работает, сохраняет отлично, и эти же данные есть в плагине, я проверял
      Артур Шевченко
      13 января 2023, 11:25
      0
      Наверное стоит показать реальный код плагина целиком.
        Vladimir
        13 января 2023, 11:31
        0
        Я даже уже расширил класс, и добавил просто даже текстом
        $msOrder->set('test', 'test1');
                $msOrder->set('test3', 'test2');
        у меня всё равно данные записываются только в последнее поле установленное в коде
          Петропавловский Артем
          13 января 2023, 18:46
          0
          Скорее всего опечатка в плагине расширения
            Vladimir
            14 января 2023, 16:17
            0
            А какой такой тип опечатки может такое сделать? в консоли всё работает да же если добавлять текст, ошибки не возникают. Всё что я хотел добавить в свои поля они есть и работает в плагине, я всё проверял.

            <?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;
            }
              Константин Ильин
              14 января 2023, 16:35
              0
              $msOrder откуда у вас взялся?
              причем в самом начале использовали $order
              disk.yandex.ru/i/bPyW8AaKaag5mA

              Можно сказать вот вам и опечатка.
                Vladimir
                14 января 2023, 18:21
                0
                когда я ставлю $order, то я не могу получить те данные которые нужны, а когда $msOrder то получаю что нужно, и плюс я веlь мои поля повесил на msOrder
                  Николай Савин
                  14 января 2023, 19:49
                  0
                  Вот вызов плагина
                  $response = $this->ms2->invokeEvent('msOnCreateOrder', array(
                                  'msOrder' => $msOrder,
                                  'order' => $this,
                              ));
                  Как можно заметить в плагине есть обе переменные. msOrder это объект заказа, order — это сам класс обработчик заказа
            Vladimir
            15 января 2023, 17:55
            0
            Ни у кого нет идей, как такое может быть?
              Константин Ильин
              15 января 2023, 19:20
              0
              1. попробовать на msOnBeforeCreateOrder
              2. попробовать так:
              $msOrder->fromArray([
                 'def_data' => $dfaultData,
                 'def_data1' => $dfaultData1,
              ]);
              $msOrder->save();
                Vladimir
                17 января 2023, 07:11
                0
                Не получается. Всё так же сохраняется лишь крайне созданное поле
                <?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;
                }
                  Константин Ильин
                  17 января 2023, 10:29
                  0
                  странно, чудеса можно сказать, ну как вариант если поменять очерёдность переменных, посмотреть что будет.
                  <?
                  $updateOrderFromArray = array(
                                 'defval2' => $defval2,
                                 'defval' => $defval
                              );
                  А как вы расширили модель заказа?
                  в логах сервака и модх ничего нет?
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              15