Magentoフォームの検証を理解する
公開: 2021-05-31目次
今日の記事では、Magento 2でのフォーム検証と、フォーム検証をMagentoストアに最適に実装する方法について学習します。
フォーム検証モジュール
Magentoには、jQuery検証に基づいて拡張するフォーム検証用の3つの主要なモジュールがあります。
-
/lib/web/jquery/jquery.validate.js
:基本のjQuery検証 /lib/web/mage/validation.js
:基本のjQuery検証と、カスタム検証ルールを追加するために使用できる$.validator.addMethod
などの追加関数が含まれています/lib/web/mage/validation/validation.js
mage/validation.js
を含み、バリデーターにさらにいくつかのルールを追加します
フォーム検証ルール
デフォルトでは、Magentoで使用可能なルールは/validation/rules.js
に保存されます。 ただし、使用できるルールはこれだけではありません。 フォーム検証のメインモジュールはjQueryに基づいているため、jQueryの組み込みの検証メソッドを使用できます。
ハウツー
カスタムルールを作成する
上記のように、 mage/validation
モジュールのJavaScriptミックスインを作成し、次のように$.validator.addMethod
を呼び出すことで、カスタムルールを作成できます。
$ .validator.addMethod( 'ルール名'、 関数(値、要素){ //検証ルールのチェック後にtrueまたはfalseを返します }、 $ .mage .__('検証が失敗した場合に表示するエラーメッセージ') )。
次のコードは、入力フィールドに5語しかないかどうかを確認するために、ミックスインに検証ルールを追加します。
ベンダー/モジュール/ビュー/フロントエンド/requirejs-config.js
var config = { 構成:{ ミックスイン:{ 'メイジ/検証':{ 'Vendor_Module / js / validation-mixin':true } } } }
ベンダー/モジュール/ビュー/フロントエンド/ウェブ/js/validation-mixin.js
define(['jquery']、function($){ '厳密に使用'; function()を返す{ $ .validator.addMethod( 'validate-five-words'、 関数(値、要素){ 戻り値.split('').length == 5; }、 $ .mage .__('正確に5つの単語を入力してください') )。 } });
既存の検証メッセージを変更する
メッセージオブジェクトは、検証ルールを変更せずに既存の検証メッセージのみを変更する必要がある場合に役立つことがあります。
たとえば、次のコードでは次のようになります。
$('#form-to-validate')。mage('validation'、{ メッセージ:{ '入力名':{ 'validation-rule-1':'検証メッセージ1'、 'validation-rule-2':'検証メッセージ2'、 }、 } });
input-name
はオブジェクトのキーであり、その値は検証ルールのリストです。 これらの検証ルールには、値として検証メッセージがあり、好みに合わせて自由に変更できます。
カスタムフォーム検証を作成する
mage/validation
ライブラリを使用すると、サーバーに送信する前にカスタムフォーム検証を作成できます。
ステップ1:検証を開始する
フォームの検証を開始するために使用できる方法は2つあります。
data-mage-init
属性の使用
<form data-mage-init ='{"validation":{}}'> ..。 </ form>
text/x-magento-init
スクリプトタイプタグの使用
<script type = "text / x-magento-init"> {{ "#my-form":{ 「検証」:{} } } </ script>
ステップ2:フォームフィールドの検証ルールを定義する
Magentoでフォーム検証ルールを定義する方法はいくつかあります
属性として
<input ... required = "true" />
引数付きの属性として
<input ... required = "true" minlength = "15" />
クラス名として
<input ... class = "input-text required-entry" />
引数付きのクラス名として
<input ... class = "input-text required-entry" minlength = "15" />
data-validate
属性として:
<input ... data-validate ='{"required":true}' />
引数付きのdata-validate
属性として
<input ... data-validate ='{"required":true、 "minlength":10}' />
data-mage-init
使用
<form ... data-mage-init ='{"validation":{"rules":{"field-1":{"required":true}}}}'> ..。 </ form>
引数付きdata-mage-init
使用
<form ... data-mage-init ='{"validation":{"rules":{"field-1":{"required":true、 "minlength":20}}}}'> ..。 </ form>
例
ここでは、さまざまな検証方法を使用して、各フィールドの検証フォームとともにフォームフィールドを作成してみます。
<form class = "form" method = "post" data-mage-init ='{"validation":{"rules":{"field-4":{"required":true}}}}'> <fieldset class = "fieldset"> <div class="フィールド名が必要"> <label class = "label" for = "field-1"> <span>フィールド1(データ検証を使用)</ span> </ label> <div class = "control"> <input name = "field-1" title = "Field 1" value = "" class = "input-text" type = "text" data-validate ='{"required":true、 "url":true}' /> </ div> </ div> <div class="フィールド名が必要"> <label class = "label" for = "field-2"> <span>フィールド2(属性を使用)</ span> </ label> <div class = "control"> <input name = "field-2" title = "Field 2" value = "" class = "input-text" type = "text" required = "true" /> </ div> </ div> <div class="フィールド名が必要"> <label class = "label" for = "field-3"> <span>フィールド3(クラス名を使用)</ span> </ label> <div class = "control"> <input name = "field-3" title = "Field 3" value = "" type = "text" class = "input-text required-entry" /> </ div> </ div> <div class="フィールド名が必要"> <label class = "label" for = "field-4"> <span>フィールド4(data-mage-initを使用)</ span> </ label> <div class = "control"> <input name = "field-4" title = "Field 4" value = "" class = "input-text" type = "text" /> </ div> </ div> </ fieldset> <div class = "actions-toolbar"> <div class = "primary"> <button type = "submit" title = "Submit" class = "action submitprimary"> <span>送信</span> </ button> </ div> </ div> </ form>
上記のフィールドとフォームの検証を使用すると、結果は次のようになります。