Проверка даты начала и окончания


14

Я работал над формой администратора, где я хочу, чтобы пользователь выбрал Start Dateи End Date.

Я должен предоставить подтверждение, так что End Dateдолжно быть больше, чем Start Date.

введите описание изображения здесь

Может ли кто-нибудь помочь мне в предоставлении defautl класса проверки Magento для начальной и конечной даты в сценарии, как описано выше?

Если это невозможно при стандартной проверке Magento, пожалуйста, отправьте пользовательский код 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' => 'обязательная запись validate-date validate-date-range date-range-custom_theme- to'` 2 ) How to input date-range-your_attribute_code-from`, поскольку у меня нет своего пользовательского кода атрибута.
Джордан

@ Джордан, как ты делаешь форму, если у тебя нет кода атрибута? Технически это не имеет значения, если в них есть одно и то attribute_codeже - просто связать два поля.
Дэвид Мэннерс

Я просто использовал класс, упомянутый в, app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpи это сработало. Я должен изменить это?
Джордан,

1
@ Джордан, тебе нужны -fromи -toсуффиксы на твоих уроках. Попробуйте date-range-start_data-fromиdate-range-start_data-to
Дэвид Мэннерс

1
Большое спасибо за четкое объяснение. Важен уникальный код атрибута для -to и -from для проверки диапазона дат.
Джордан,

0

Все проверки привязаны к правилам проверки Java Script, определенным в

JS / прототип / validation.js

файл

Вы можете настроить свой код там


У вас есть настроенный код, который будет работать?
Джордан

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