Всего 123 800 комментариев

Александр
08 марта 2023, 18:49
0
все вызывается и работает (заказ то создается), если отключить json_response, то я получу ответ в том виде, который я отдаю, но без id новосозданного заказа.
Данный контроллер используется в api для построения фронта отдельно от modx
Константин Ильин
08 марта 2023, 18:41
0
у вас видимо какой-то отдельный компонент-класс и как вы его запускаете не совсем понятно, но пользуйтесь тогда для отладки, в разных участках кода
$this->modx->log(1, print_r($result,1));
Смотреть в Журнале ошибок в самом модх.
Начните с самого простого в самом начале функции post()
$this->modx->log(1, print_r('Это я class shopOrder2 запустился',1));
если у вас журнале вообще ничего не выводит и ошибки тоже(и ошибки в серверном логе тоже нет), то скорее всего ваш класс вообще не запускается и с ним не работает modx или вы его вообще не вызываете и т.п.
Александр
08 марта 2023, 18:20
0
<?php

class shopOrder2 extends shopBaseRestController
{
    public $allowedMethods = array('post');

    public function post()
    {
        
        // инициализируем miniShop2
            $scriptProperties = [
                'json_response' => 1,
            ];
        	
        	$miniShop2 = $this->modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
        	
        	// опции товара, если они необходимы
        	$option = array();
        	/*$option = array(
        	  "option1" => "value1",
        	  "option2" => "value2",
        	);*/
        	// инициализируем miniShop2 в текущем контексте
        	$miniShop2->initialize($this->modx->context->key, $scriptProperties);
        
        $cart = $miniShop2->cart->get();

        if (!count($cart)) {
            $result = [
                'message' => 'Корзина пуста',
                'success' => false
            ];
            return $this->failure('', $result);
        }

        //Получатель
        $email = $this->getProperty('email');
        $phone = $this->getProperty('phone');
        $receiver = $this->getProperty('name');

        //Дата и время доставки
        //$soon = (bool)$this->getProperty('soon');
        $delivery_date = $this->getProperty('delivery_date');
        $delivery_time = $this->getProperty('delivery_time');

        //Адрес
        $street = $this->getProperty('street');
        $building = $this->getProperty('building');
        $room = $this->getProperty('apartment');
        $entrance = $this->getProperty('entrance');
        $floor = $this->getProperty('floor');

        $comment = $this->getProperty('comment');

        //Доставка и оплата
        $payment = (int)$this->getProperty('payment');
        $delivery = (int)$this->getProperty('delivery');

        $miniShop2->order->add('payment', $payment);
        $miniShop2->order->add('delivery', $delivery);

        $miniShop2->order->add('receiver', $receiver);
        $miniShop2->order->add('email', $email);
        $miniShop2->order->add('phone', $phone);

        $miniShop2->order->add('soon', $soon);
        $miniShop2->order->add('delivery_date', $delivery_date);
        $miniShop2->order->add('delivery_time', $delivery_time);

        $miniShop2->order->add('street', $street);
        $miniShop2->order->add('building', $building);
        $miniShop2->order->add('room', $room);
        $miniShop2->order->add('entrance', $entrance);
        $miniShop2->order->add('floor', $floor);
        $miniShop2->order->add('comment', $comment);

        $result['r'] = json_decode($miniShop2->order->submit(),1);
        
        $result['r'] = $arr = json_decode($miniShop2->order->submit(),1);
        if($arr['success'] && $arr["data"]["msorder"] > 0){
            $msOrder = $modx->getObject('msOrder', $arr["data"]["msorder"]);
            $order = $msOrder->toArray();
            $result['orderId'] = $order;
            $resp['out'] = $pdo->parseChunk('@FILE cart/fastOrderSuccess.tpl',$arr);
        }
        $result['orderId'] = $response['data']['msorder'];
        
        return $this->success('', $result);

    }
}
Константин Ильин
08 марта 2023, 18:11
0
код весь покажите тогда

там еще $pdo->… выше получаю:
$pdo = $modx->getService('pdoTools');
Александр
08 марта 2023, 17:57
0
Не помогло, к сожалению.
Повторил ваше получение заказа и все равно тот же вывод
{"success":true,"message":"","data":{"msorder":56}}
в виде html с игнорированием вообще каких-либо конструкций вывода информации. Что само по себе очень странно.
Даже нет ошибки из-за отсутствия такого чанка как у вас (специально решил не менять, чтобы вызвать ошибку)
Константин Ильин
08 марта 2023, 16:54
0
не только 'json_response' => 1, а getService тоже смотрите параметры передаю
Константин Ильин
08 марта 2023, 16:44
0
видимо у меня так же, т.е. нужно самостоятельно получить заказ, т.к. далее у меня такой код:

$resp['r'] = $arr = json_decode($miniShop2->order->submit(),1);
if($arr['success'] && $arr["data"]["msorder"] > 0){
    $msOrder = $modx->getObject('msOrder', $arr["data"]["msorder"]);
    $order = $msOrder->toArray();
    $resp['out'] = $pdo->parseChunk('@FILE cart/fastOrderSuccess.tpl',$arr);
}
Александр
08 марта 2023, 16:03
0
Действительно
$scriptProperties = ['json_response' => 1];
помогает, но в таком случае ответ приходит в виде html с содержимым {«data»: {«msorder»:15}} и полностью игнорирует построение ответа.
Вот пример:
if (isset($response['success']) && $response['success'] == true) {
            $result['post'] = $this->properties;
            $result['response'] = $response;
            $result['orderId'] = $response['data']['msorder'];
            $miniShop2->cart->clean();
            return $this->success('', $result);
        }
и по идее, вывод должен быть таким только с наполненной data[]:
{
    "success": true,
    "message": "",
    "object": {
        "post": {
            "payment": "1",
            "delivery": "1",
            "name": "Алекс",
            "email": "test@test.ru"
        },
        "response": {
            "success": true,
            "message": "",
            "data": []
        },
        "orderId": null
    },
    "code": 200
}
а выведет при включенном json_response вот так:
{"success":true,"message":"","data":{"msorder":53}}
Причем в html формате.

Никак не могу решить данную проблему
Константин Ильин
08 марта 2023, 15:55
0
У меня так вызывается
$scriptProperties = [
     'json_response' => 1,
];
/* возможно эта строчка поможет */
$miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);

$miniShop2->initialize($modx->context->key, $scriptProperties);
$miniShop2->order->clean();
$miniShop2->cart->clean();
$miniShop2->cart->add($dataForm['id'],($dataForm["count"] ?: 1),$option);
/* ... */
$resp['r'] = json_decode($miniShop2->order->submit(),1);
Александр
08 марта 2023, 15:17
0
вот спустя почти 4 года проблема с
$miniShop2->order->submit()
осталась.
Удалось кому-то решить?
Игорь
08 марта 2023, 12:52
0
да вот хотелось что б фотки и видео можно было в перемешку. Странно что нельзя расковырять migx и отключить проверку наличия загруженной фотографии.

А что если при добавлении одиночного фото у тв что б сразу в поле инпут была какая-нибудь фотка заглушка. (Тогда при удалении видео удалится и картинка и везде где она была указана у видео).
Алексей Смирнов
08 марта 2023, 10:53
0
ТВ и феном не связаны.
Я говорю про фронт. что на феноме проще делается обьединение информации от 2х ТВ, чем на парсере.
На парсере MODX придется не обьединять а выводить по очереди. например сначала фотки потом видео или наоборот.
в принфипе и на феном последовательность так же будет либо фото и потом видео, но кода в 2 раза меньше.
Валерий
07 марта 2023, 22:09
0
Понимаю, что сто лет прошло, но может вы как-то решили эту проблему?
Тоже не подтягивается CSS после манипуляций выше. Делаю через Ajax + Formit. Сам PDF формируется и ссылка на него в письме приходит.
Игорь
07 марта 2023, 20:30
0
Только на феном можно сделать дополнительное TV для ввода ссылки? (
Баха Волков
07 марта 2023, 15:24
0
На данный момент — да, третья версия MODX так долго добиралась, что я и забыл про её существование
Валерий
07 марта 2023, 15:14
0
День добрый.
Компонент только для ModX 2?