Validation rules for customer address attributes are stored in customer_eav_attribute table. Below is example of how to adjust a rule for specific attribute. Let’s say we want first name to be minimum 3 chars long. It is done via data patch.
<?php
declare(strict_types=1);
namespace Magento\Customer\Setup\Patch\Data;
use Magento\Customer\Setup\CustomerSetup;
use Magento\Customer\Setup\CustomerSetupFactory;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\Patch\DataPatchInterface;
class UpdateCustomerAddressAttributeValidationRule implements DataPatchInterface
{
/**
* @var ModuleDataSetupInterface
*/
private $moduleDataSetup;
/**
* @var CustomerSetupFactory
*/
private $customerSetupFactory;
/**
* UpdateCustomerAddressAttributeValidationRule constructor.
* @param ModuleDataSetupInterface $moduleDataSetup
* @param CustomerSetupFactory $customerSetupFactory
*/
public function __construct(
ModuleDataSetupInterface $moduleDataSetup,
CustomerSetupFactory $customerSetupFactory
) {
$this->moduleDataSetup = $moduleDataSetup;
$this->customerSetupFactory = $customerSetupFactory;
}
/**
* @inheritDoc
*/
public function apply()
{
/** @var CustomerSetup $customerSetup */
$customerSetup = $this->customerSetupFactory->create(['setup' => $this->moduleDataSetup]);
$this->updateCustomerAddressAttributeValidationRule($customerSetup);
return $this;
}
/**
* @inheritDoc
*/
public function getAliases()
{
return [];
}
/**
* @inheritDoc
*/
public static function getDependencies()
{
return [
DefaultCustomerGroupsAndAttributes::class,
];
}
/**
* Update customer address validation rule
*
* @param CustomerSetup $customerSetup
*
* @return void
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
private function updateCustomerAddressAttributeValidationRule($customerSetup)
{
$entityAttributes = [
'customer_address' => [
'firstname' => [
'validate_rules' => '{"max_text_length":255,"min_text_length":3}'
]
],
];
$customerSetup->upgradeAttributes($entityAttributes);
}
}