Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 100 комментариев

Алексей Шумаев
Алексей Шумаев
Нюанс со сниппетом msCart: прерывание работы сниппета при наличии $_GET['msorder']: disk.yandex.ru/i/fOiDPWuW8xgXsg
Мне кажется, это ошибочное решение, т.к. данный сниппет, например может применяться для вывода мини-корзины и тогда будет просто пустота — ни чанка, на массива.
Крайне неожиданное поведение — ведь логика отображения должна быть исключительно в чанке.
Не думаю, что нужно просто глушить вывод сниппета от наличия этой переменной — может (и точно будет) приводить к проблемам и постоянным вопросам пользователей.

Предполагаю, что это сделано для случая вывода корзины и формы заказа на одной странице, но лучше таки оставить логику на стороне чанков/шаблона, чтобы это было контролируемо.
Например:
{if $.get.msorder is empty} // выводим корзину {/if}
Алексей Шумаев
Алексей Шумаев
В массиве $order (сниппет msOrder) значения cost, cart_cost (+возможно delivery_cost) содержат нечисловые значения: disk.yandex.ru/i/ezWUv4Sd6lyucA. Т.е. вместо чистого числа там строка с пробелом.
Это приводит к разным нюансам, а главное — к фатальной ошибке в случае применения к ним модификатора number pdoTools.
Пока лучше делать так, если используем эти параметры:
{$order.cost | replace : ' ' : '' | number : 0 : '.' : ' '}
Алексей Шумаев
Алексей Шумаев
Ещё момент: ошибка при создании покупателя через js CustomerAPI
Пробуем выполнить:
await ms3.customerUI.handleAdd('email', 'user@example.com')
В классе CustomerAPI (assets/components/minishop3/js/web/core/CustomerAPI.js) выполняется метод add,
отправляющий запрос на роут /api/v1/customer/add
disk.yandex.ru/i/QLb00kmT6NItWg, которого не существует: disk.yandex.ru/i/G1mWoPwSw0DmbA
Логично, т.к. такого роута нет в core/components/minishop3/config/routes/web.php

Возможно вместо handleAdd в CustomerUI должен быть метод handleRegister, использующий соответствующий роут. Я обратил на него внимание именно потому, что не понял, зачем нужен handleAdd.
Логично, что нужно зарегистрировать клиента через register, а если менять его поля, то это или PUT profile или PUT addresses если поля адресные. Ну или я что-то не понял.