การตรวจสอบวันที่เริ่มต้นและสิ้นสุด


14

ฉันได้รับการทำงานในรูปแบบผู้ดูแลระบบที่ผมต้องการให้ผู้ใช้เลือกและStart DateEnd Date

ฉันมีเพื่อให้การตรวจสอบดังกล่าวที่จะต้องมากกว่าEnd DateStart 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'
        ));

ขอบคุณ

คำตอบ:


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- to'`2 ) How to input วันที่ช่วงช่วง -your_attribute_code- จาก `ฉันไม่มีรหัสแอตทริบิวต์ที่กำหนดเองของฉัน
Jordan

@Jordan คุณสร้างแบบฟอร์มอย่างไรหากคุณไม่มีรหัสคุณลักษณะ? ในทางเทคนิคแล้วมันไม่สำคัญว่าตราบเท่าที่ทั้งสองมีสิ่งเดียวกันในattribute_codeมันเป็นเพียงการเชื่อมโยงทั้งสองสาขา
David Manners

ฉันเพิ่งใช้คลาสที่กล่าวถึงapp/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpและใช้งานได้ ฉันจำเป็นต้องเปลี่ยนหรือไม่
Jordan

1
@ จอร์แดนคุณต้องการ-fromและ-toคำต่อท้ายในชั้นเรียนของคุณ ลองdate-range-start_data-fromและdate-range-start_data-to
มารยาทของเดวิด

1
ขอบคุณมากสำหรับคำอธิบายที่ชัดเจน สิ่งสำคัญคือรหัส attrib เฉพาะสำหรับ - ถึงและ - จากเพื่อตรวจสอบช่วงวันที่
Jordan

0

การตรวจสอบทั้งหมดเชื่อมโยงกับกฎการตรวจสอบความถูกต้องของจาวาสคริปต์

js / ต้นแบบ / validation.js

ไฟล์

คุณสามารถกำหนดรหัสเองได้


คุณมีรหัสที่กำหนดเองซึ่งจะใช้งานได้หรือไม่
จอร์แดน

ฉันขอแนะนำให้แก้ไขไฟล์หลักของ Magento js/prototype/validation.jsอย่างมาก คุณสามารถเพิ่มการตรวจสอบที่กำหนดเองในไฟล์ JS แยก ...
7ochem
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.