Ошибка "Street Address" длин должна быть равна или больше чем 1 символов

Ошибка "Street Address" длин должна быть равна или больше чем

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Сергей Сукманюк
  • Группа: Пользователь
  • Сообщений: 62
  • Регистрация: 20.01.2011

08.03.2011 13:41

Добрый день. Кт-нибудь ставлкивался с таким:
1. Зарегистрированный клиент с русским адресом делает заказ.
2. На первом этапе "Информация о платильщике" уже введены данные, и при нажатии "Продолжить" появляется сообщение:
""Street Address" длина должна быть равна или больше чем 1 символов.
"Street Address" длина должна быть равна или больше чем 1 символов."
Я пробывал ввести в адресе перед "ул..." любые английские буквы, например "ul", то никакая ошибка не возникает.
А пробую заказать как "незарегистрированный клиент", ввожу все на русском, кроме e-mail, отлично заказывает без ошибок.
В чем может быть проблема?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

08.03.2011 13:51

Это известный дефект Magento 1.5.0.1.
Он будет исправлен в следующей версии.
Пока можете устранить дефект следующей заплаткой.

Откройте файл app/code/core/Mage/Checkout/Model/Type/Onepage.php
Найдите там в двух местах следующий код:
$addressErrors  = $addressForm->validateData($address->getData());

(исправлено)

В обоих случаях перед этим кодом напишите:
$address->setData("street",explode("n",$address->getData("street")));


#3 Сергей Сукманюк
  • Группа: Пользователь
  • Сообщений: 62
  • Регистрация: 20.01.2011

08.03.2011 14:02

Дмитрий, я сделал так как Вы сказали, добавил в файл Onepage.php код в двух местах, но, почемуто результат остался прежним.

Может я что-то не доделал. У меня получился такой код:
1-й код:
 // emulate request object
            $addressData    = $addressForm->extractData($addressForm->prepareRequest($data));
$address->setData("street",explode("n",$address->getData("street")));
            $addressErrors  = $addressForm->validateData($addressData);
            if ($addressErrors !== true) {
                return array('error' => 1, 'message' => $addressErrors);
            }
            $addressForm->compactData($addressData);


2-й код:
 // emulate request object
            $addressData    = $addressForm->extractData($addressForm->prepareRequest($data));
$address->setData("street",explode("n",$address->getData("street")));
            $addressErrors  = $addressForm->validateData($addressData);
            if ($addressErrors !== true) {
                return array('error' => 1, 'message' => $addressErrors);
            }
            $addressForm->compactData($addressData);


#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

08.03.2011 14:27

Верно, чуть ошибся.
Указанные строчки напишите перед
$addressErrors  = $addressForm->validateData($address->getData());

там тоже 2 вхождения

Исправил исходное сообщение.

#5 Сергей Сукманюк
  • Группа: Пользователь
  • Сообщений: 62
  • Регистрация: 20.01.2011

08.03.2011 14:33

ОТЛИЧНО!!! БЛАГОДАРЮ ЗА ПОМОЩЬ ДМИТРИЙ. ТЕПЕРЬ ЗАРАБОТАЛО!!! ЗАКАЗЫ ПРОХОДЯТ БЕЗ ОШИБОК!!!

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

20.03.2011 15:35

Исправление включено в предварительную версию Magento 1.5.1.0-beta1 от 18 марта.
Обновляться до неё пока не стоит, потому что это предварительная версия, но включение говорит о том, что в Magento 1.5.1.0 этой ошибки в ядре не будет.

#7 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

25.03.2011 02:37

В интересах клиентов Российской сборки включил в Российскую сборку исправление данного дефекта ядра Magento.
Обратите внимание, что, в отличие от «быстрого и грязного» решения, опубликованного здесь, заплатка Российской сборки не затрагивает и не меняет ни единого системного файла Magento.
Поэтому клиентам Российской сборки, которые уже исправили дефект правкой системного файла app/code/core/Mage/Checkout/Model/Type/Onepage.php, настоятельно рекомендую вернуть данный файл в исходный эталонный вид, и просто включить указанную на картинке опцию в настройках Российской сборки:

Прикрепленное изображение: checkout-1.png

Предварительно обновите Российскую сборку до версии 1.3.12.
При обновлении в рамках ветки 1.3 достаточно:
1) отключить кеш и компиляцию
2) установить новую версию поверх старой
3) включить кеш и компиляцию

Поделиться темой: