Adicionar campo de endereço de validação personalizado no back-end Magento 2

8

Desejo definir o valor do tamanho mínimo para o campo Endereço no lado do administrador

insira a descrição da imagem aqui

Quero definir o campo min_text_length = 5For Street Addressno formulário de endereço do cliente

Estou tentando atualizar o atributo, mas não está funcionando

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

No banco de dados já definido, {"max_text_length":255,"min_text_length":5}mas a validação não está funcionando

insira a descrição da imagem aqui

Nota: - Lado do administrador, não do lado da frente.

Rk Rathod
fonte
você pode atualizar atributo e adicionar validação pelo script de instalação (pode adicionar manualmente a partir do DB), Para a validação remover check-out dianteira mudando LayoutProcessor.php e fazer mesma coisa na seção de registo e endereço atualização removendo classe de validação
Ketan Borada
eu sei sobre formulário de endereço e página de checkout, mas no lado de administração não encontrar qualquer referência ou uma solução
Rk Rathod
Qual é a sua versão do magento?
Sohel Rana
v 2.2.8 @Sohel Rana
Rk Rathod
Poste seu código / mencione claramente qual formulário você deseja personalizar em questão.
Vivek Kumar

Respostas:

9

Você pode fazer isso por script e atualizar a validação dentro dele.

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

Você pode alterá-lo diretamente do DB; você deve fazê-lo com cuidado.

  • Abra a tabela, eav_attributeencontre a attribute_coderua e saia attribute_iddela (geralmente attribute_id é 28).

insira a descrição da imagem aqui

  • Abra a tabela customer_eav_attributee encontre isso attribute_id(28 no meu caso). atualização na validate_rulescoluna {"max_text_length":255,"min_text_length":5}

insira a descrição da imagem aqui

  • Agora é feito em admin

    insira a descrição da imagem aqui

Nota: Você deve remover se ocorrer na frente

Ketan Borada
fonte
deixe-me verificar e repetir em breve
Rk Rathod
não bro não o seu trabalho i já tentar atributo update
Rk Rathod
mas na base de dados já definido { "MAX_TEXT_LENGTH": 255, "min_text_length": 5} mas a validação não está funcionando
Rk Rathod
1+ para resposta
Rk Rathod
pode qualquer outro conflito de extensão ou js erro, caso contrário você pode verificá-la trabalhando para mim
Ketan Borada
5

não tenho certeza se isso funciona

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

Exemplo do primeiro nome

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

remova esta validação

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

até aqui

            <dataType>text</dataType>
        </settings>
    </field>
jibin george
fonte
não o seu trabalho
Rk Rathod
@RkRathod oi desculpe, eu pensei que você queria remover a validação. Eu vou deixar você saber se eu encontrar alguma coisa. desculpe novamente
jibin george 17/06/19
@RkRathod tente o seguinte: <item name = "max_text_length" xsi: type = "number"> 5 </item>
jibin george
@RkRathod funcionou? ou era algo novo que você encontrou
Jibin george
@RkRathod se você não se importa, vai compartilhar a resposta?
Jibin george
0

Você pode fazer isso no admin (Magento 2.3.3):

Validação de endereço de administrador

Niels
fonte
11
Onde posso encontrar isso em admin?
Nayem
@Nayem Stores -> Atributos -> Endereço do cliente e selecione "Endereço" na lista.
Niels