Добавить пользовательское поле адреса улицы проверки в бэкэнд Magento 2

8

Я хочу установить минимальное значение длины для поля адреса на стороне администратора

введите описание изображения здесь

Я хочу установить min_text_length = 5для Street Addressполя в форме адреса клиента

Я пытаюсь обновить атрибут, но не работает

public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        if (version_compare($context->getVersion(), '1.0.1', '<')) {
            $customerSetup = $this->customerSetup->create(['setup' => $setup]);
            $customerSetup->addAttribute(
                'customer_address',
                'street',
                [
                    'type' => 'static',
                    'label' => 'Street Address',
                    'input' => 'multiline',
                    'backend' => \Magento\Eav\Model\Entity\Attribute\Backend\DefaultBackend::class,
                    'sort_order' => 70,
                    'multiline_count' => 4,
                    'validate_rules' => '{"max_text_length":255,"min_text_length":5}',
                    'position' => 70,
                ]
            );
        }
    }

В базе данных уже установлено, {"max_text_length":255,"min_text_length":5}но проверка не работает

введите описание изображения здесь

Примечание: - Сторона администратора, а не сторона интерфейса.

Rk Rathod
источник
Вы можете обновить атрибут и добавить проверку с помощью сценария установки (можно добавить вручную из БД). Для предварительной проверки удалите проверку, изменив LayoutProcessor.php, и сделайте то же самое в разделе регистрации и обновления адреса, удалив класс проверки
Ketan Borada
Я знаю о форме адреса и странице оформления
заказа,
Какая у вас версия magento?
Сохель Рана
v 2.2.8 @ Сохел Рана
Rk Rathod
Пожалуйста, оставьте свой код / ​​четко укажите, какую форму вы хотите настроить в вопросе.
Вивек Кумар

Ответы:

9

Вы можете сделать это с помощью сценария и проверки обновлений в it.You есть изменения

'validate_rules' => '{"max_text_length":255,"min_text_length":5}',

Вы можете изменить это непосредственно из БД, вы должны сделать это осторожно.

  • Откройте таблицу eav_attributeи найдите attribute_codeулицу и получите attribute_idот нее (обычно attribute_id равен 28).

введите описание изображения здесь

  • Откройте таблицу customer_eav_attributeи найдите ее attribute_id(28 в моем случае). обновить в validate_rulesстолбце {"max_text_length":255,"min_text_length":5}

введите описание изображения здесь

  • Теперь это делается в админке

    введите описание изображения здесь

Примечание: вы должны удалить, если это происходит спереди

Кетан Борада
источник
Позвольте мне проверить и повторить в ближайшее время
Rk Rathod
нет братан, это не работает, я уже пытался обновить атрибут
Rk Rathod
но в базе данных уже установлено {"max_text_length": 255, "min_text_length": 5}, но проверка не работает
Rk Rathod
1+ за ответ
Rk Rathod
Может ли любое другое расширение конфликтовать или JS ошибка, в противном случае вы можете проверить, работает ли он для меня
Ketan Borada
5

я не уверен, если это работает

<rule name="required-entry" xsi:type="boolean">true</rule>

Пример из имени

<field name="city" formElement="input">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="source" xsi:type="string">address</item>
            </item>
        </argument>
        <settings>

удалить эту проверку

            <validation>
                <rule name="required-entry" xsi:type="boolean">true</rule>
            </validation>

до здесь

            <dataType>text</dataType>
        </settings>
    </field>
джибин джордж
источник
это не работает
Rk Rathod
@RkRathod Привет, извините, я думал, что вы хотите удалить проверку. я дам вам знать, если найду что-нибудь. еще раз извините
джибин джордж
@RkRathod попробуйте это: <item name = "max_text_length" xsi: type = "number"> 5 </ item>
джибин джордж
@RkRathod это сработало? или это было что-то новое, что вы нашли
Джибин Джордж
@RkRathod если вы не возражаете, поделитесь ответом?
Джибин Джордж
0

Вы можете сделать это от администратора (Magento 2.3.3):

Проверка адреса администратора

Нильс
источник
1
Где я могу найти это в админке?
Найем
@Nayem Stores -> Attributes -> Customer Address и выберите «Street Address» из списка.
Нильс