8

I Want To Set Minimum Length Value For Street Address Field On Admin Side

enter image description here

I want to set min_text_length = 5 For Street Address Field In Customer Address Form

I am Trying To Update Attribute but Not Working

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,
                ]
            );
        }
    }

In Database Already Set {"max_text_length":255,"min_text_length":5} But Validation not Working

enter image description here

Note :- Admin Side Not Frontend Side.

8
  • you can update attribute and add validation by setup script(can add manually from DB),For front checkout remove validation by changing LayoutProcessor.php and do same thing in register and update address section by removing validation class Jun 19, 2019 at 6:56
  • i know about address form and checkout page but in admin side not find any reference or solution Jun 19, 2019 at 7:00
  • What is your magento version?
    – Sohel Rana
    Jun 19, 2019 at 7:03
  • v 2.2.8 @Sohel Rana Jun 19, 2019 at 7:03
  • Please post your code/ mention clearly which form you want to customize in question. Jun 19, 2019 at 7:11

4 Answers 4

11
+100

You Can do it by Script and update validation within it.You have to change

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

You can change it directly from DB you have to do it carefully.

  • Open table eav_attribute and find attribute_code street and get attribute_id from it (generally attribute_id is 28).

enter image description here

  • Open table customer_eav_attribute and find that attribute_id (28 in my case). update in validate_rules column {"max_text_length":255,"min_text_length":5}

enter image description here

  • Now it is done in admin

    enter image description here

Note: You have to remove if it occurs in front

7
  • let me check and replay soon Jun 19, 2019 at 7:35
  • no bro its not working i have already try to update attribute Jun 19, 2019 at 7:40
  • but in data base already set {"max_text_length":255,"min_text_length":5} but validation is not working Jun 19, 2019 at 7:40
  • 1+ for response Jun 19, 2019 at 7:49
  • may any other extension conflicts or js error,otherwise you can check it working for me Jun 19, 2019 at 8:39
5

i am not sure if this works

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

Example from first name

<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>

remove this validation

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

up to here

            <dataType>text</dataType>
        </settings>
    </field>
7
  • its not working Jun 17, 2019 at 5:56
  • @RkRathod hi sorry i thought you wanted to remove the validation. i will let you know if i find something. sorry again Jun 17, 2019 at 7:25
  • @RkRathod try this : <item name="max_text_length" xsi:type="number">5</item> Jun 17, 2019 at 7:34
  • @RkRathod did it work? or was it something new you found Jun 17, 2019 at 8:05
  • @RkRathod if you dont mind will you share the answer? Jun 17, 2019 at 8:39
1

update column validate_rules = {"min_text_length":"1","max_text_length":"10","input_validation":"length"} in table customer_eav_attribute with attribute_id = 28. it's working for me for first fied in address enter image description here

Step 2: In ui_component/customer_address_form.xml enter image description here

Step 3: Create Observer enter image description here

enter image description here

Step 4: override file Magento\Customer\Model\Address\DataProvider.php enter image description here

enter image description here

2
  • it's worked. thanks.
    – fudu
    Oct 1, 2021 at 7:07
  • because the first validate rules updated in db is worked for the first street view only, and not worked for 2 last street view, so the idea is create 2 new dummy fields and hide 2 last street fields. then when we save the 2 new dummy field, we will set 2 last street fields by that 2 dummy field.
    – fudu
    Oct 1, 2021 at 7:19
0

You can do this from the admin (Magento 2.3.3):

Admin address validation

3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.