バックエンドMagento 2にカスタム検証ストリートアドレスフィールドを追加する


8

管理者側の住所フィールドの最小長さを設定したい

ここに画像の説明を入力してください

私は設定したいmin_text_length = 5ためにStreet 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}、検証が機能していません

ここに画像の説明を入力してください

注:-管理側はフロントエンド側ではありません。


あなたは属性を更新し、バリデーションクラスを除去することにより、LayoutProcessor.phpを変更することにより、フロントチェックアウト削除の検証のために、(DBから手動で追加することもできます)、セットアップスクリプトによる検証を追加し、レジスタと更新アドレスセクションで同じことを行うことができます
Ketan Borada

アドレスフォームとチェックアウトページについては知っていますが、管理者側では参照や解決策が見つかりません
Rk Rathod

magentoのバージョンは何ですか?
Sohel Rana

v 2.2.8 @Sohel Rana
Rk Rathod

問題のカスタマイズしたいフォームをコード/投稿に明記してください。
Vivek Kumar

回答:


9

あなたはそれをスクリプトで行い、その中で検証を更新することができます。変更する必要があります

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

あなたはそれをDBから直接変更することができます、あなたはそれを注意深く行わなければなりません。

  • テーブル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 Rathod

しかし、データベースではすでに{"max_text_length":255、 "min_text_length":5}が設定されていますが、検証が機能していません
Rk Rathod

1以上で回答
Rk Rathod

他の拡張機能の競合またはjsエラーが発生する可能性があります。それ以外の場合は、動作することを確認できます
Ketan Borada

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こんにちは、バリデーションを削除したいと思いました。何か見つけたらお知らせします。申し訳ありませんが
ジビンジョージ

@RkRathod試してみてください:<item name = "max_text_length" xsi:type = "number"> 5 </ item>
jibin george

@RkRathodうまくいきましたか?それともあなたが見つけた何か新しいものでしたか
ジビン・ジョージ

@RkRathodあなたが気にしない場合は、答えを共有しますか?
ジビンジョージ

0

これは管理者(Magento 2.3.3)から実行できます。

管理アドレス検証


1
これは管理者のどこにありますか?
ナイエム

@Nayem Stores-> Attributes-> Customer Addressをクリックし、リストから「Street Address」を選択します。
Niels
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.