Validation des dates de début et de fin

14

Je travaille sur le formulaire d'administration où je veux que l'utilisateur sélectionne Start Dateet End Date.

Je dois fournir une validation telle que le End Datedoit être supérieur à Start Date.

entrez la description de l'image ici

Quelqu'un pourrait-il m'aider à fournir la classe de validation par défaut de Magento pour la date de début et de fin avec le scénario comme expliqué ci-dessus?

Si ce n'est pas possible avec la validation par défaut de Magento, veuillez poster un code JS personnalisé.

C'est aussi dans mon formulaire pour la plage de dates

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

Merci

Jordan
la source

Réponses:

8

Essayez d'utiliser la validate-date-rangeclasse du validateur de Magento sur vos champs.

Si vous ajoutez ceci aux deux champs, il obtiendra le à ce jour et comparera les deux valeurs.

Si obtenez la valeur à ce jour en utilisant le code suivant:

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

Donc, ce que vous devrez faire, c'est ajouter une classe au format date-range-your_attribute_code-fromet date-range-your_attribute_code-to. Cela signifie que Magento est capable de lier les deux champs.

Pour un exemple de cela, consultez l'onglet de conception sur les pages CMS. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

Voici une explication plus détaillée des classes:

  1. validate-date: cela garantit que la valeur saisie est une date valide,
  2. validate-date-range: cela fait la comparaison entre deux dates lorsque les classes sont correctes,
  3. date-range-custom_data-from, date-range-custom_data-to: ceux-ci lient les deux dates afin qu'elles puissent être utilisées dans la vérification de la plage de dates, notez que celles-ci doivent être les mêmes à part le -toet-from signifie que cela peut être date-range-xxxx-fromet date-range-xxxx-torespectivement.
David Manners
la source
Deux questions: 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` car je n'ai pas mon code d'attribut personnalisé.
Jordanie
@Jordan comment faites-vous le formulaire si vous n'avez pas votre code attributaire? Techniquement, cela n'a pas d'importance tant que les deux ont la même chose, attribute_codec'est juste de lier les deux champs.
David Manners
Je viens d'utiliser la classe mentionnée dans app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpet cela a fonctionné. Dois-je le changer?
Jordan
1
@Jordan vous avez besoin des suffixes -fromet -tode vos cours. Essayez date-range-start_data-frometdate-range-start_data-to
David Manners
1
Merci beaucoup pour l'explication claire. Ce qui compte, c'est un code attribut unique pour -to et -from pour vérifier la plage de dates.
Jordan
0

Toutes les validations sont liées aux règles de validation Java Script définies sous

js / prototype / validation.js

Fichier

Vous pouvez y personnaliser votre code

TBI Infotech
la source
Avez-vous le code personnalisé qui fonctionnera?
Jordan
Je déconseille fortement de modifier le fichier core de Magento js/prototype/validation.js. Vous pouvez ajouter des validations personnalisées dans un fichier JS séparé ...
7ochem