Перевірка дати початку та закінчення


14

Я працював над формою адміністратора, де я хочу, щоб користувач обрав Start Dateі End 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 на своїх полях.

Якщо ви додасте це в обидва поля, то воно отримає дату та порівняє два значення.

Якщо отримати значення дати, використовуючи наступний код:

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 здатний зв'язати два поля.

Для прикладу цього перегляньте вкладку дизайну на сторінках CMS. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

Далі є більш детальне пояснення щодо занять:

  1. validate-date: це гарантує, що введене значення є дійсною датою,
  2. validate-date-range: це порівняння між двома датами, коли мають правильні класи,
  3. date-range-custom_data-from, date-range-custom_data-to: Це посилання на дві дати , так що вони можуть бути використані в діапазоні дат перевірки, зауважимо , що вони повинні бути однаковими крім -toі-from засобів може бути date-range-xxxx-fromі date-range-xxxx-toвідповідно.

Два запитання: 1 ) How does this work -> 'class' => 'обов'язковий запис валідація-дата валідація-діапазон дат-діапазон-custom_theme- до'` 2 ) How to input діапазон дат-ваш_attribute_code-from`, оскільки у мене немає власного коду атрибута.
Йордан

@Jordan, як ти робиш форму, якщо у тебе немає коду атрибута? Технічно це не має значення, поки у них одна і та ж річ, attribute_codeце просто зв'язати два поля.
Девід Маннерс

Я просто використовував клас, про який говорилося, app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpі він працював. Чи потрібно це міняти?
Йорданія

1
@Jordan вам потрібно -fromі -toсуфікси на класах. Спробуйте date-range-start_data-fromіdate-range-start_data-to
Девід Маннерс

1
Дякую велике за чітке пояснення. Що важливо, це унікальний код attrib для -to і -rom, щоб перевірити діапазон дат.
Йордан

0

Усі перевірки пов'язані з правилами перевірки сценарію Java, визначеними в

js / prototype / validation.js

Файл

Ви можете налаштувати код там


Чи є у вас індивідуальний код, який буде працювати?
Йордан

Я б дуже не рекомендував змінювати основний файл Magento js/prototype/validation.js. Ви можете додати спеціальні перевірки в окремий файл JS ...
жовтня
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.