Walidacja daty początkowej i końcowej


14

Pracuję nad formularzem administratora, w którym chcę, aby użytkownik wybrał Start Datei End Date.

Muszę przedstawić takie potwierdzenie, że wartość End Datemusi być większa niż Start Date.

wprowadź opis zdjęcia tutaj

Czy ktoś mógłby mi pomóc w zapewnieniu defautl klasy sprawdzania poprawności Magento dla daty początkowej i końcowej zgodnie ze scenariuszem opisanym powyżej?

Jeśli nie jest to możliwe przy domyślnej walidacji Magento, prosimy o przesłanie niestandardowego kodu JS.

Jest to również w mojej formie dla zakresu dat

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

Dzięki

Odpowiedzi:


8

Spróbuj użyć validate-date-rangeklasy walidatora Magento na swoich polach.

Jeśli dodasz to do obu pól, pobierze datę i porówna dwie wartości.

Jeśli uzyskasz aktualną wartość za pomocą następującego kodu:

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

Musisz więc dodać klasę w formacie date-range-your_attribute_code-fromi date-range-your_attribute_code-to. Spowoduje to, że Magento będzie w stanie połączyć dwa pola.

Przykład tego znajduje się na karcie projektu na stronach CMS. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

Poniżej znajduje się bardziej szczegółowe wyjaśnienie dotyczące klas:

  1. validate-date: zapewnia to, że wprowadzona wartość jest prawidłową datą,
  2. validate-date-range: robi to porównanie dwóch dat, kiedy mają właściwe klasy,
  3. date-range-custom_data-from, date-range-custom_data-to: Te dwa terminy łącza, dzięki czemu można je stosować w zakres dat sprawdzić, notatka, że powinny one być takie same oprócz -toi-from środków może być date-range-xxxx-fromi date-range-xxxx-toodpowiednio.

Dwa pytania: 1 ) How does this work -> „klasa” => „wymagany-wpis validate-date validate-date-range date-range-custom_theme- do” 2 ) How to input date-range-your_attribute_code-from` ponieważ nie mam własnego niestandardowego kodu atrybutu.
Jordan

@Jordan, jak tworzysz formularz, jeśli nie masz kodu atrybutu? Technicznie nie ma to znaczenia, dopóki oba mają w sobie to samo, attribute_codeto po prostu połączyć dwa pola.
David Manners

Właśnie użyłem wspomnianej klasy app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpi zadziałało. Czy muszę to zmienić?
Jordan

1
@Jordan, potrzebujesz -fromi -tosufiksów na swoich zajęciach. Spróbuj date-range-start_data-fromidate-range-start_data-to
David Manners

1
Wielkie dzięki za jasne wyjaśnienie. Liczy się unikalny kod atrybutu dla -to i -f, aby sprawdzić zakres dat.
Jordan

0

Wszystkie sprawdzania poprawności są powiązane z regułami sprawdzania poprawności skryptu Java zdefiniowanymi w

js / prototype / validation.js

Plik

Możesz dostosować swój kod tam


Czy masz dostosowany kod, który będzie działał?
Jordan

Odradzam modyfikowanie pliku rdzenia Magento js/prototype/validation.js. Możesz dodać niestandardowe walidacje w osobnym pliku JS ...
7ochem
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.