Magento 2: Проверка с новым способом доставки проблема, когда длина кода превышает 40 символов
Хочу обсудить проблему, с которой я столкнулся, и предложения по ней.
В столбце quote_shipping_rate
таблицы code
допустимая длина составляет 255, но в столбце quote_address
таблицы shipping_method
длина составляет только 40.
Таким образом, при настройке перевозчика и метода в способе доставки он сочетает в себе и то, и другое, и сохранение в таблице quote_shipping_rate
.
Итак, здесь, если общая длина кода превышает 40 символов, то теряются символы из индекса 41.
С помощью этой конфигурации я могу достичь страница оплаты заказа. Но после этого я получаю "An error occurred on the server. Please try to place the order again"
Предварительные условия
- Элемент списка
- Версия Magento: 2.1.6 (издание сообщества)
- PHP: 7.0.24
- MySQL: 5.7.19
Шаги для воспроизведения
- Добавить новый способ доставки Ссылка для создания нового способа доставки
- Попробуйте оформить заказ, выбрав этот способ доставки
- На этапе проверки оплаты ошибка будет срабатывает
Ожидаемый результат
- Он должен успешно разместить заказ
Предлагаемое решение
- Увеличьте длину столбца
quote_address
таблицыshipping_method
с 40 до 255 (она должна быть такой же, как длина столбцаquote_shipping_rate
таблицыcode
255) - Ошибка не поддается исправлению, поэтому я предлагаю это обновление.
Оригинальная ошибка на github.
1 answers
Существует два способа предотвратить такого рода ошибки:
- Увеличить размер поля (
quote_address
столбец таблицыshipping_method
размер) - Уменьшить carrier_method длину кода
В моем пользовательском модуле, где методы доставки могут создаваться динамически, я просто ограничиваю его длину 19 символами: 19 символов для кода перевозчика + 1 символ для "_" + 19 символов для кода метода, поэтому он всегда имеет длину
Я думаю, что 19 символов для кодов достаточно для набора твои нужды.
PS: Я надеюсь, что команда Magento исправит эту ошибку и сделает все поля длиной 255 символов в одном из следующих обновлений.
Примечание: только что проверил это в версии 2.2.1 (Предприятие и сообщество) и обнаружил, что столбец quote_address.shipping_method
имеет тип varchar(120)