开始和结束日期验证


14

我一直在管理表单,我希望用户选择Start DateEnd Date

我必须提供验证,以确保End Date必须大于Start Date

在此处输入图片说明

有人可以帮助我为上述场景中的开始日期和结束日期提供默认的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'
        ));

谢谢

Answers:


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-fromdate-range-custom_data-to:这些链接两个日期,以便可以在日期范围检查中使用它们,请注意,除了-to和之外,它们应该相同,并且-from可以分别是date-range-xxxx-fromdate-range-xxxx-to

两个问题:) How does this work -> 1'class'=>'required-entry validate-date validate-date-range date-range-custom_theme- to'` 2 ) How to input date-range-your_attribute_code-from`,因为我没有自定义属性代码。
乔丹

@Jordan如果没有属性代码,您将如何制作表格?从技术上讲,只要两者具有相同的内容attribute_code就可以,只要链接两个字段即可。
David Manners 2014年

我只是使用了其中提到的课程app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php,它起作用了。我需要更改吗?
约旦

1
@Jordan,您需要在课程上加上-from-to后缀。尝试date-range-start_data-fromdate-range-start_data-to
大卫礼仪

1
非常感谢您的明确解释。重要的是用于-to和-from的唯一属性代码以检查日期范围。
乔丹

0

所有的验证都与在下面定义的Java脚本验证规则相关联

js / prototype / validation.js

文件

您可以在那里自定义代码


您是否有可以使用的自定义代码?
乔丹

我强烈不建议修改Magento核心文件js/prototype/validation.js。您可以在单独的JS文件中添加自定义验证...
7ochem
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.