開始日と終了日の検証


14

私は、ユーザーが選択したい管理フォームに取り組んできたStart DateEnd Date

End Dateがより大きい必要があるような検証を提供する必要がありますStart Date

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

上記のシナリオで、開始日と終了日のデフォルトのMagento検証クラスを提供するのに役立つ人はいますか?

デフォルトのMagento検証では不可能な場合、plsはカスタムJSコードをポストします。

また、これは日付範囲の私のフォームです

        $dateFormatIso = Mage::app()->getLocale()->getDateFormat(
            Mage_Core_Model_Locale::FORMAT_TYPE_SHORT
        );

$fieldset->addField('start_date', 'date', array(
            'label'     => Mage::helper('myhelper')->__('Start Date'),
            'name'      => 'start_date',
            'note'      => $this->__('Start Date'),
            'required'  => true,
            'image'     => $this->getSkinUrl('images/grid-cal.gif'),
            'format'    => $dateFormatIso,
             'class'    => 'required-entry validate-date validate-date-range date-range-start_date-from'
        ));

        $fieldset->addField('end_date', 'date', array(
            'label'     => Mage::helper('myhelper')->__('End Date'),
            'name'      => 'end_date',
            'note'      => $this->__('End Date'),
            'required'  => true,
            'image'     => $this->getSkinUrl('images/grid-cal.gif'),
            'format'    => $dateFormatIso,
            'class'     => 'required-entry validate-date validate-date-range date-range-end_date-to'
        ));

ありがとう

回答:


8

validate-date-rangeフィールドでMagentoのバリデーターのクラスを使用してみてください。

これを両方のフィールドに追加すると、最新の値が取得され、2つの値が比較されます。

次のコードを使用して最新の値を取得する場合:

var m = /\bdate-range-(\w+)-(\w+)\b/.exec(elm.className);
if (!m || m[2] == 'to' || Validation.get('IsEmpty').test(v)) {
    return true;
}

だからあなたがする必要があるのは、フォーマットdate-range-your_attribute_code-fromとでクラスを追加することですdate-range-your_attribute_code-to。これにより、Magentoが2つのフィールドをリンクできるようになります。

この例については、CMSページのデザインタブをご覧ください。 app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

以下は、クラスに関するより詳細な説明です。

  1. validate-date:これにより、入力した値が有効な日付になります。
  2. validate-date-range:これは、クラスが正しいときに2つの日付を比較します。
  3. date-range-custom_data-fromdate-range-custom_data-to:彼らは、日付範囲のチェックで使用することができますこれらのリンク2つの日付ように、これらは別に同じであるべきであることに注意-toし、-fromそれができることを意味date-range-xxxx-fromし、date-range-xxxx-toそれぞれ。

2つの質問:1 ) How does this work -> 'class' => 'required-entry validate-date validate-date-range date-range-custom_theme-to'` 2 ) How to input date-range-your_attribute_code-from`カスタム属性コードがないため。
ヨルダン14

@Jordan属性コードがない場合、どのようにフォームを作成していますか?技術的にはattribute_code、2つのフィールドがリンクしていれば、2 つのフィールドが同じである限り問題ではありません。
デビッドマナーズ14

で言及したクラスを使用しただけでapp/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php、うまくいきました。変更する必要がありますか?
ヨルダン14

1
@Jordan では、クラスに-fromとの-toサフィックスが必要です。試してみてくださいdate-range-start_data-fromdate-range-start_data-to
デヴィッド・マナー

1
明確な説明をありがとう。重要なのは、日付範囲をチェックする-toおよび-fromの一意のattribコードです。
ヨルダン14

0

すべての検証は、以下で定義されるJava Script検証ルールに関連付けられています

js / prototype / validation.js

ファイル

コードをカスタマイズできます


動作するカスタマイズされたコードはありますか?
ヨルダン14

Magentoコアファイルを変更することは非常にお勧めできませんjs/prototype/validation.js。個別のJSファイルにカスタム検証を追加できます...
7ochem
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.