Convalida della data di inizio e fine


14

Ho lavorato sul modulo di amministrazione in cui voglio che l'utente selezioni Start Datee End Date.

Devo fornire una convalida tale che End Datedeve essere maggiore di Start Date.

inserisci qui la descrizione dell'immagine

Qualcuno potrebbe aiutarmi a fornire la classe di validazione Magento defautl per la data di inizio e fine con lo scenario come spiegato sopra?

Se ciò non è possibile con la convalida Magento predefinita, ti preghiamo di pubblicare un codice JS personalizzato.

Anche questo è nel mio modulo per l'intervallo di date

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

Grazie

Risposte:


8

Prova a utilizzare la validate-date-rangeclasse di validazione di Magento nei tuoi campi.

Se aggiungi questo ad entrambi i campi, otterrà la data attuale e confronterà i due valori.

Se ottieni il valore attuale usando il seguente codice:

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

Quindi quello che dovrai fare è aggiungere una classe nel formato date-range-your_attribute_code-frome date-range-your_attribute_code-to. In questo modo Magento è in grado di collegare i due campi.

Per un esempio di ciò, controlla la scheda di progettazione nelle pagine CMS. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

Di seguito è una spiegazione più dettagliata delle classi:

  1. validate-date: questo assicura che il valore inserito sia una data valida,
  2. validate-date-range: fa il confronto tra due date quando hanno le classi corrette,
  3. date-range-custom_data-from, date-range-custom_data-to: collegano le due date in modo che possano essere utilizzate nel controllo dell'intervallo di date, si noti che devono essere uguali a parte -toe-from significa che può essere date-range-xxxx-frome date-range-xxxx-torispettivamente.

Due domande: 1 ) How does this work -> 'class' => 'richiesto-voce validate-date validate-date-range date-range-custom_theme- to'` 2 ) How to input date-range-your_attribute_code-from` in quanto non ho il mio codice di attributo personalizzato.
Giordania,

@Jordan come stai facendo il modulo se non hai il tuo codice di attributo? Tecnicamente non importa finché i due hanno la stessa cosa in attribute_codeesso è solo per collegare i due campi.
David Manners,

Ho appena usato la classe menzionata app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpe ha funzionato. Devo cambiarlo?
Giordania,

1
@Jordan hai bisogno dei suffissi -frome -todelle tue lezioni. Prova date-range-start_data-fromedate-range-start_data-to
David Manners,

1
Grazie mille per una chiara spiegazione. Ciò che conta è un codice attributo univoco per -to e -from per controllare l'intervallo di date.
Giordania,

0

Tutte le validazioni sono legate alle regole di validazione Java Script definite sotto

js / prototipo / validation.js

File

Puoi personalizzare il tuo codice lì


Hai il codice personalizzato che funzionerà?
Giordania,

Scoraggerei fortemente la modifica del file core di Magento js/prototype/validation.js. Puoi aggiungere convalide personalizzate in un file JS separato ...
7ochem
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.