Удалите или отключите атрибут клиента, добавленный при переносе с 1.9.3.2 на 2.1.4


Я перенес сайт с 1.9.3.2 на 2.1.4, и есть атрибут клиента customerno, который был добавлен из модуля под названием Fontis_Customer. В старом модуле есть файл:

app/code/local/Fontis/Customer/Model/Entity/Setup.php

class Fontis_Customer_Model_Entity_Setup extends Mage_Customer_Model_Entity_Setup
{
        'customerno' => array(
                'label'         => 'Customer Number',
                'visible'       => true,
                'required'      => true,
        ),
}

После миграции он перенес этот атрибут и предотвращает проверки. Когда я нажимаю кнопку для оформления заказа, я получаю сообщение об ошибке The value of attribute "customerno" must be set Я запустил запрос:

mysql> select * from eav_attribute ea INNER JOIN customer_eav_attribute cea ON cea.attribute_id = ea.attribute_id WHERE ea.frontend_label LIKE '%Customer%' \G
*************************** 1. row ***************************
         attribute_id: 140
       entity_type_id: 1
       attribute_code: customerno
      attribute_model: NULL
        backend_model: NULL
         backend_type: varchar
        backend_table: NULL
       frontend_model: NULL
       frontend_input: text
       frontend_label: Customer Number
       frontend_class: NULL
         source_model: NULL
          is_required: 0
      is_user_defined: 0
        default_value: NULL
            is_unique: 0
                 note: NULL
         attribute_id: 140
           is_visible: 1
         input_filter: NULL
      multiline_count: 1
       validate_rules: NULL
            is_system: 0
           sort_order: 0
           data_model: NULL
      is_used_in_grid: 0
   is_visible_in_grid: 0
is_filterable_in_grid: 0
is_searchable_in_grid: 0

И я увидел, что поле is_required было установлено на 1. Я установил его на 0, думая, что это решит проблему, но это не так. Является есть где-то еще, где это значение установлено в обязательное значение в базе данных?

РЕДАКТИРОВАТЬ: Я должен отметить, что я бы предпочел сделать это на уровне базы данных, а не создавать модуль, чтобы сделать это за меня.

Author: Khoa TruongDinh, 2017-03-12

1 answers

Взгляните : vendor/magento/module-eav/Model/Entity/Attribute/Backend/AbstractBackend.php::validate()

if ($attribute->getIsVisible()
    && $attribute->getIsRequired()
    && $attribute->isValueEmpty($value)
    && $attribute->isValueEmpty($attribute->getDefaultValue())
 ) {
       throw new LocalizedException(__('The value of attribute "%1" must be set', $attrCode));
 }

Как мы видим, это сообщение появляется, когда: (с использованием условий and)

  • is_visible установите значение 1.
  • is_required установите значение 1.
  • Этот атрибут не имеет значения.

В вашем случае, после изменения is_required на 0, процесс оформления заказа должен работать. Следует повторить попытку с помощью:

  • Попробуйте еще раз переиндексировать базу данных.

  • Очистите кэш Magento.

 1
Author: Khoa TruongDinh, 2017-03-12 04:54:13