Validasi Tanggal Mulai dan Akhir

14

Saya telah mengerjakan formulir admin tempat saya ingin pengguna memilih Start Datedan End Date.

Saya harus memberikan validasi sehingga End Dateharus lebih besar dari Start Date.

masukkan deskripsi gambar di sini

Adakah yang bisa membantu saya menyediakan kelas validasi Magento defautl untuk tanggal mulai dan berakhir dengan skenario seperti dijelaskan di atas?

Jika tidak memungkinkan dengan validasi Magento default, silakan kirim kode JS khusus.

Ini juga dalam formulir saya untuk rentang tanggal

        $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'
        ));

Terima kasih

Yordania
sumber

Jawaban:

8

Coba gunakan validate-date-rangekelas validator Magento di bidang Anda.

Jika Anda menambahkan ini ke kedua bidang maka akan mendapatkan tanggal dan membandingkan dua nilai.

Jika mendapatkan nilai terkini menggunakan kode berikut:

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

Jadi yang perlu Anda lakukan adalah menambahkan kelas dalam format date-range-your_attribute_code-fromdan date-range-your_attribute_code-to. Melakukan ini berarti Magento dapat menautkan kedua bidang.

Untuk contoh ini, periksa tab desain pada halaman CMS. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

Berikut ini adalah penjelasan yang lebih rinci tentang kelas:

  1. validate-date: ini memastikan bahwa nilai yang dimasukkan adalah tanggal yang valid,
  2. validate-date-range: ini melakukan perbandingan antara dua tanggal ketika memiliki kelas yang benar,
  3. date-range-custom_data-from, date-range-custom_data-to: ini menghubungkan kedua tanggal sehingga mereka dapat digunakan dalam pemeriksaan rentang tanggal, perhatikan bahwa ini harus sama terlepas dari -todan-from berarti dapat date-range-xxxx-fromdan date-range-xxxx-tomasing - masing.
David Manners
sumber
Dua pertanyaan: 1 ) How does this work -> 'kelas' => 'wajib masuk-validasi-tanggal validasi-rentang-tanggal-rentang-custom_theme- hingga'` 2 ) How to input rentang-tanggal-your_attribute_code-from` karena saya tidak memiliki kode atribut khusus saya.
Jordan
@ Jordan, bagaimana Anda membuat formulir jika Anda tidak memiliki kode atribut Anda? Secara teknis tidak masalah asalkan keduanya memiliki hal yang sama di attribute_codedalamnya hanya untuk menghubungkan kedua bidang tersebut.
David Manners
Saya hanya menggunakan kelas yang disebutkan app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpdan itu berhasil. Apakah saya perlu mengubahnya?
Jordan
1
@ Jordan, Anda perlu -fromdan -tosufiks di kelas Anda. Coba date-range-start_data-fromdandate-range-start_data-to
David Manners
1
Terima kasih banyak untuk penjelasan yang jelas. Yang penting adalah kode attrib unik untuk -to dan -dari untuk memeriksa rentang tanggal.
Jordan
0

Semua validasi terikat dengan aturan validasi Java Script yang didefinisikan di bawah

js / prototype / validation.js

Mengajukan

Anda dapat menyesuaikan kode Anda di sana

TBI Infotech
sumber
Apakah Anda memiliki kode khusus yang akan berfungsi?
Jordan
Saya akan sangat menyarankan memodifikasi file inti Magento js/prototype/validation.js. Anda dapat menambahkan validasi khusus dalam file JS terpisah ...
7ochem