Всего 123 801 комментарий

Роман
19 июля 2023, 09:52
0
Так не сработает, так выведет только ресурс с id 7, а мне нужны еще и его потомки.
Дмитрий Кондаков
19 июля 2023, 09:38
0
parents — это родитель, у ресурса 7 родитель не может быть 7. Уберите &parents=`7` и все заработает
Александр Мельник
18 июля 2023, 22:40
+1
Не знаю почему у вас работает. Я отрыл в документации (и даже по той ссылке что вы дали на mdn это тоже написано), что включение mode no-cors позволяет использовать только простые запросы.
Кстати до сегоднешнего дня не знал, что запросы делятся на простые и сложные. Но как оказалось, если запрос содержит content-type — aplication/json он уже считается сложным.
Простой запрос – это запрос, удовлетворяющий следующим условиям:

Простой метод: GET, POST или HEAD
Простые заголовки – разрешены только:
Accept,
Accept-Language,
Content-Language,
Content-Type со значением application/x-www-form-urlencoded, multipart/form-data или text/plain.

Любой другой запрос считается «непростым». Например, запрос с методом PUT или с HTTP-заголовком API-Key не соответствует условиям.
If mimeType’s essence is not «application/x-www-form-urlencoded», «multipart/form-data», or «text/plain», then return false.

Поэтому насколько я понял, fetch принудительно меняет заголовок на text, если я указал mode no-cors.
Хотя у вас работает.
Я тоже грешил на сервер, потому что это мной построенные на docker целый кластер из контейнеров, с двойным проксирование запросов и напартачить там можно было во многих местах. Но запросы с postamn, curl — проходили правильно, с корректным content-type.
Пришлось более глубоко вникнуть в работу cors. Убрал из fetch no-cors и реализовал у себя в приложении обработку предзапроса по методу options. Полнейшее для меня открытие, но оказалось что как только мы хотим сделать «сложный» запрос на «не свой домен», перед основным запросом браузер отсылает предварительный запрос на тот же url но только методом options и просит разрешения на основной запрос.
Как только я организовал у себя обработку этих предзапросов и возврат корректных (по документации заголовков), у меня все заработало.

Прекрасно, что удалось открыть что то новое для себя и спасибо за подсказки.
Баха Волков
18 июля 2023, 22:01
+1
Возможно у тебя какой-то прикол в настройках сервера.

// index.js

const btn = document.querySelector('#send')

btn.addEventListener('click', async () => {
  const user = {
    phone: '+0000000000',
    password: '76c4a096d14',
  }

  const response = await fetch('/test.php', {
    method: 'POST',
    mode: 'no-cors',
    headers: {
      'Content-Type': 'application/json;charset=utf-8',
    },
    body: JSON.stringify(user),
  })

  const result = await response.json()
  console.log(result)
})

// test.php

<?php

echo json_encode([
  'CONTENT_TYPE' => $_SERVER['CONTENT_TYPE'],
  'Content-Type' => getallheaders()['Content-Type']
]);

// Ответ сервера

{"CONTENT_TYPE":"application/json","Content-Type":"application/json"}
Артур Шевченко
18 июля 2023, 18:24
+1
Можешь вообще эту оцию не использовать, она, по-моему, бесполезная. CORS запрос сделать не поможет, а для чего ещё её можно использовать непонятно.
Александр Мельник
18 июля 2023, 17:46
0
я понял, это наверное изза
mode: 'no-cors',
Николай Савин
18 июля 2023, 17:31
+2
А ну может. Не помню уже, редко пользуюсь этим полем.
Да вообще мысль хорошая. Нам не помешал бы конструктор полей по которым нужно искать.
Дмитрий
18 июля 2023, 17:29
0
Не, Пользователь это из раздела Пользователи, по нему ищет поиск стандартно. А нужно искать по полю reciever, это с вкладки Адрес в заказе, поле Получатель.
Николай Савин
18 июля 2023, 17:20
0
Дык есть же поле Заказчик. Это и есть receiver
Руслан Алеев
18 июля 2023, 17:20
0
Чет сомневаюсь, что без правок возможно, по крайней мере на чистом miniShop2.
Еще минус правок в том, что после обновления затрутся изменения.
Как вариант, можно, наверное, свой js подрубить в панель заказа и через него запускать php-код и возвращать нужное, НО это чисто теоретический вариант, не подскажу конкретнее…
Александр Мельник
18 июля 2023, 17:17
0
Если делаю этот же запрос, но через postman, выбрав body->row-json
то запрос на сервер приходит с корретным Content-Type.

Так же проверил, что fetch автодектит тип данных и если совсем удалить заголовок и передать в запросе FormData, то он подставит заголовок корректный.
И я даже согласен с тем, что json по своей сути это текст, а значит можно сказать что fetch передал по умолчанию заголовок Content-Type:text/html, но почему он игнорирует заданный в парметрах заголовок, пока для меня загадка.
Дмитрий
18 июля 2023, 17:12
0
Спасибо, а без правок исходников такое возможно вообще?
ruslan
18 июля 2023, 15:44
0
загрузить получилось на 2.8.4-pl
но как только пытаюсь в него войти — 504 Gateway Time-out
Сергей Карпович
18 июля 2023, 11:15
0
Сам разобрался.
В чанке выода карты, перед последними скобками можно добавить дополнительную логику, например отключение скрола:
[[+mapId]].behaviors
        // Отключаем часть включенных по умолчанию поведений:
        //  - drag - перемещение карты при нажатой левой кнопки мыши;
        //  - magnifier.rightButton - увеличение области, выделенной правой кнопкой мыши.
        .disable(['scrollZoom', 'drag', 'rightMouseButtonMagnifier'])
steve.kon
17 июля 2023, 14:52
0
То, что нужно! Большое спасибо!
Daniel
17 июля 2023, 13:57
+1
Вопрос был задан давно, но вдруг кому-то будет полезно.

Дело в том, что modx по умолчанию не запускает парсер fenom, пока не обнаружит соответствующий токен.
Вероятно
{rand(1,10)}
не является таким токеном.

Подобное поведение можно так же заметить и с комментариями.

Если отсутствуют другие теги fenom, то комментарий вида:
{* Комментарий *}
будет выведен как текст.
Как только добавим другие теги феном — комментарий вырезается из финального вывода.
Сергей Карпович
17 июля 2023, 12:26
0
Привет, подскажите, есть параметр в сниппете на отключение скрола мышкой, или это нужно добавлять в чанк вывода карты уже?