Как я могу сделать поля для ввода адреса необязательными на странице экспресс-проверки PayPal?

magento.stackexchange https://magento.stackexchange.com/questions/12667

  •  16-10-2019
  •  | 
  •  

Вопрос

Итак, как следует из моего названия..

Я знаком с тем, как это сделать при выставлении счетов на одностраничной кассе (

  1. сделать атрибуты необязательными в eav attributes таблица в базе данных,
  2. скопируйте Customer/Model/Address.php файл редактирует соответствующую проверку в методе "validate").

Однако это не помогло на странице экспресс-проверки PayPal, и это не позволит пользователю оформить заказ, указав:

"Неверный адрес для выставления счета.Поле "ГОРОД" обязательно для заполнения"

Должен быть похожий файл (для Abstract.php), который проверяет данные перед отправкой, но я просто не могу их отследить.Любой, кто может или уже знает, пожалуйста, прислушайтесь к призыву - сообщество вполне может извлечь из этого пользу, так же как и я.Если вам понадобится дополнительная информация, дайте мне знать.Спасибо

Это было полезно?

Решение

Я ненавижу публиковать ответы на свои собственные вопросы, но, похоже, как тот, кто нуждается в этом больше всего, я прошел здесь дистанцию..как это слишком часто бывает..

Итак, после опробования многочисленных техник, включая:

1) создание атрибутов, которые не требуются в eav attributes таблица в базе данных;

2) программное добавление этих обязательных полей в базу данных при обновлении счета (с событием)

Лучшее, что я придумал и что работает (очень хорошо), - это создать скрытые поля для любых полей, которые являются обязательными, но не релевантными - в моем случае city, region и postcode - и включите их в форму.Я считаю, что самый простой способ сделать это - создать функцию для этого в файле пользовательского модуля следующим образом (изменение $inputFields_arr чтобы соответствовать обязательным полям, которые вы хотите проигнорировать):

public function getRequiredNotRequestedInputs($prefix) { // fill in input values required but not wanted
    $value = 'NOT REQUESTED';
    $inputFields_arr = array('city', 'region', 'postcode'); // required fields that we don't need/request
    foreach($inputFields_arr as $inputField) {
        $return_arr[] = '<input type="hidden" name="'.$prefix.'['.$inputField.']" id="'.$prefix.':'.$inputField.'" value="'.$value.'" />';
    }
    return implode('',$return_arr);
}

Тогда назовите это так:

<?php echo $moduleFile->getRequiredNotRequestedInputs('billing'); // set city, postcode, etc ?>

.. из любой точки, которую вы хотите (где $moduleFile это файл, в котором вы сохранили вышеупомянутую функцию).В моем случае я уже обращался к этому:

app/design/frontend/default/YOUR-TEMPLATE/template/YOUR-CUSTOM-LAYOUT/checkout/billing.phtml

Я знаю, что есть те, кто захочет сделать это быстрым и неприятным способом (и это ваше преимущественное право), поместив скрытые поля непосредственно в локальный файл интерфейса (и переопределив ядро), но после того, как вы научитесь использовать пользовательские модули со всем, что сможете, это не только поможет вам обновляться (хорошо услышанная проповедь), но и будет поддерживать порядок, и для меня это больше, чем половина дела.Надеюсь, это будет полезно другим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top