Überprüfung des Start- und Enddatums


14

Ich habe auf Admin - Form gearbeitet , wo ich möchte der Benutzer auswählen Start Dateund End Date.

Ich muss eine solche Validierung vorlegen, dass die End Dategrößer sein muss als Start Date.

Bildbeschreibung hier eingeben

Könnte mir jemand helfen, eine defekte Magento-Validierungsklasse für Start- und Enddatum mit dem oben erläuterten Szenario bereitzustellen?

Wenn dies mit der standardmäßigen Magento-Validierung nicht möglich ist, senden Sie bitte einen benutzerdefinierten JS-Code.

Auch dies ist in meiner Form für den Zeitraum

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

Vielen Dank

Antworten:


8

Versuchen Sie, die Magento-Validierungsklasse validate-date-rangefür Ihre Felder zu verwenden.

Wenn Sie dies zu beiden Feldern hinzufügen, wird das aktuelle Datum abgerufen und die beiden Werte verglichen.

Wenn Sie den aktuellen Wert mit dem folgenden Code erhalten:

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

Sie müssen also eine Klasse im Format date-range-your_attribute_code-fromund hinzufügen date-range-your_attribute_code-to. Auf diese Weise kann Magento die beiden Felder verbinden.

Ein Beispiel hierfür finden Sie auf der Registerkarte "Design" auf den CMS-Seiten. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

Das Folgende ist eine detailliertere Erklärung zu den Klassen:

  1. validate-date: dies stellt sicher, dass der eingegebene Wert ein gültiges Datum ist,
  2. validate-date-range: das macht den Vergleich zwischen zwei Daten, wenn die richtigen Klassen haben,
  3. date-range-custom_data-from, date-range-custom_data-to: Diese Verbindung die beiden Daten , so dass sie in dem Zeitpunkt verwendet werden können Bereich überprüfen, beachten Sie, dass diese gleich neben den sein sollte -tound-from Mittel es sein kann date-range-xxxx-fromund date-range-xxxx-tojeweils.

Zwei Fragen: 1 ) How does this work -> 'class' => 'required-entry validate-date validate-date-range date-range-custom_theme- to'` 2 ) How to input date-range-your_attribute_code-from`, da ich nicht über meinen benutzerdefinierten Attributcode verfüge.
Jordanien

@Jordan, wie machst du das Formular, wenn du keinen Attributcode hast? Technisch spielt es keine Rolle, solange die beiden dasselbe attribute_codedarin haben, nur die beiden Felder zu verbinden.
David Manners

Ich habe gerade die in erwähnte Klasse benutzt app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpund es hat funktioniert. Muss ich es ändern?
Jordanien,

1
@Jordan du brauchst die -fromund -toSuffixe in deinen Klassen. Versuchen Sie date-range-start_data-fromunddate-range-start_data-to
David Manners

1
Vielen Dank für die klare Erklärung. Was zählt, ist ein eindeutiger Attributcode für -to und -from, um den Datumsbereich zu überprüfen.
Jordanien

0

Alle Validierungen sind an die unter definierten Java Script Validierungsregeln gebunden

js / prototype / validation.js

Datei

Sie können Ihren Code dort anpassen


Haben Sie den angepassten Code, der funktionieren wird?
Jordanien

Ich würde dringend davon abraten, die Magento-Kerndatei zu ändern js/prototype/validation.js. Sie können benutzerdefinierte Überprüfungen in einer separaten JS-Datei hinzufügen ...
7ochem
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.