Ajouter un champ d'adresse de rue de validation personnalisé dans le backend Magento 2


8

Je veux définir une valeur de longueur minimale pour le champ d'adresse de rue du côté administrateur

entrez la description de l'image ici

Je veux mettre min_text_length = 5pour le Street Addressterrain dans le formulaire d'adresse du client

J'essaie de mettre à jour l'attribut mais ne fonctionne pas

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

Dans la base de données déjà définie {"max_text_length":255,"min_text_length":5}mais la validation ne fonctionne pas

entrez la description de l'image ici

Remarque: - Côté administrateur et non côté frontal.


vous pouvez mettre à jour l'attribut et ajouter la validation par le script d'installation (vous pouvez ajouter manuellement à partir de la base de données), pour la vérification avant, supprimez la validation en modifiant LayoutProcessor.php et faites la même chose dans la section d'enregistrement et de mise à jour de l'adresse en supprimant la classe de validation
Ketan Borada

je connais le formulaire d'adresse et la page de paiement, mais dans le côté administrateur, je ne trouve aucune référence ou solution
Rk Rathod

Quelle est votre version de magento?
Sohel Rana

v 2.2.8 @Sohel Rana
Rk Rathod

Veuillez afficher votre code / mentionner clairement le formulaire que vous souhaitez personnaliser en question.
Vivek Kumar

Réponses:


9

Vous pouvez le faire par script et mettre à jour la validation à l'intérieur. Vous devez changer

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

Vous pouvez le changer directement à partir de DB, vous devez le faire avec soin.

  • Ouvrez la table eav_attributeet trouvez la attribute_coderue et récupérez attribute_id-la (généralement l'attribut_id est 28).

entrez la description de l'image ici

  • Ouvrez la table customer_eav_attributeet trouvez cela attribute_id(28 dans mon cas). mettre à jour dans la validate_rulescolonne {"max_text_length":255,"min_text_length":5}

entrez la description de l'image ici

  • Maintenant c'est fait en admin

    entrez la description de l'image ici

Remarque: Vous devez supprimer si cela se produit devant


laissez-moi vérifier et rejouer bientôt
Rk Rathod

non bro son ne fonctionne pas, j'ai déjà essayé de mettre à jour l'attribut
Rk Rathod

mais dans la base de données déjà définie {"max_text_length": 255, "min_text_length": 5} mais la validation ne fonctionne pas
Rk Rathod

1+ pour réponse
Rk Rathod

peut tout autre conflit d'extension ou erreur js, sinon vous pouvez le vérifier fonctionne pour moi
Ketan Borada

5

je ne sais pas si cela fonctionne

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

Exemple du prénom

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

supprimer cette validation

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

jusqu'ici

            <dataType>text</dataType>
        </settings>
    </field>

ça ne fonctionne pas
Rk Rathod

@RkRathod salut désolé, je pensais que vous vouliez supprimer la validation. je vous ferai savoir si je trouve quelque chose. désolé encore
jibin george

@RkRathod essayez ceci: <item name = "max_text_length" xsi: type = "number"> 5 </item>
jibin george

@RkRathod a-t-il fonctionné? ou est-ce quelque chose de nouveau que vous avez trouvé
jibin george

@RkRathod si cela ne vous dérange pas, partagerez-vous la réponse?
jibin george

0

Vous pouvez le faire depuis l'administrateur (Magento 2.3.3):

Validation de l'adresse administrateur


1
Où puis-je trouver cela dans admin?
Nayem

@Nayem Stores -> Attributes -> Customer Address, et sélectionnez "Street Address" dans la liste.
Niels
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.