在后端Magento 2中添加自定义验证街道地址字段


8

我想在管理员端为街道地址字段设置最小长度值

在此处输入图片说明

我想设置min_text_length = 5Street 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}但验证不起作用的情况下

在此处输入图片说明

注意:-管理员端而不是前端端。


您可以通过设置脚本来更新属性并添加验证(可以从DB手动添加),对于前台结帐,可以通过更改LayoutProcessor.php删除验证,并通过删除验证类在注册和更新地址部分中执行相同的操作
Ketan Borada

我知道地址表格和结帐页面,但在管理方面找不到任何参考或解决方案
Rk Rathod19年

您的magento版本是什么?
Sohel Rana

v 2.2.8 @Sohel Rana
Rk Rathod

请张贴您的代码/明确提及您要自定义的表单。
Vivek Kumar

Answers:


9

您可以通过脚本进行操作并更新其中的验证。您必须进行更改

'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 Rathod19年

但在数据库中已设置{“ max_text_length”:255,“ min_text_length”:5}但验证不起作用
Rk Rathod

1+回应
Rk Rathod

可能有任何其他扩展名冲突或js错误,否则您可以检查它是否对我
有用

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嗨,抱歉,我认为您想删除验证。如果我找到东西,我会告诉你。再次抱歉
jibin george

@RkRathod尝试以下方法:<item name =“ max_text_length” xsi:type =“ number”> 5 </ item>
jibin george,

@RkRathod起作用了吗?或者是它新的东西,你发现
积斌乔治·

@RkRathod如果您不介意,您会分享答案吗?
吉宾乔治

0

您可以从管理员(Magento 2.3.3)执行此操作:

管理员地址验证


1
我在哪里可以找到这个?
Nayem

@Nayem商店->属性->客户地址,然后从列表中选择“街道地址”。
尼尔斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.