Fecha de inicio y finalización de validación


14

He estado trabajando en el formulario de administración donde quiero que el usuario seleccione Start Datey End Date.

Tengo que proporcionar una validación tal que End Datedebe ser mayor que Start Date.

ingrese la descripción de la imagen aquí

¿Podría alguien ayudarme a proporcionar la clase de validación predeterminada de Magento para la fecha de inicio y finalización con el escenario como se explicó anteriormente?

Si no es posible con la validación predeterminada de Magento, publique el código JS personalizado.

También esto está en mi forma para el rango de fechas

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

Gracias

Respuestas:


8

Intente usar la validate-date-rangeclase de validación de Magento en sus campos.

Si agrega esto a ambos campos, obtendrá la fecha y comparará los dos valores.

Si obtiene el valor actualizado usando el siguiente código:

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

Entonces, lo que tendrá que hacer es agregar una clase en el formato date-range-your_attribute_code-fromy date-range-your_attribute_code-to. Hacer esto significará que Magento puede vincular los dos campos.

Para ver un ejemplo de esto, consulte la pestaña de diseño en las páginas de CMS. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

La siguiente es una explicación más detallada sobre las clases:

  1. validate-date: esto asegura que el valor introducido sea una fecha válida,
  2. validate-date-range: esto hace la comparación entre dos fechas cuando tienen las clases correctas,
  3. date-range-custom_data-from, date-range-custom_data-to: estas vinculan las dos fechas para que puedan usarse en la verificación del rango de fechas, tenga en cuenta que estas deben ser las mismas aparte de -toy-from significa que puede ser date-range-xxxx-fromy date-range-xxxx-torespectivamente.

Dos preguntas: 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` ya que no tengo mi código de atributo personalizado.
Jordan

@ Jordan, ¿cómo está haciendo el formulario si no tiene su código de atributo? Técnicamente no importa, siempre y cuando los dos tengan lo mismo attribute_code, es solo vincular los dos campos.
David Manners

Acabo de usar la clase mencionada app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpy funcionó. ¿Necesito cambiarlo?
Jordania

1
@ Jordan necesita los sufijos -fromy -toen sus clases. Prueba date-range-start_data-fromydate-range-start_data-to
David Manners

1
Muchas gracias por una explicación clara. Lo que importa es un código de atributo único para -to y -desde para verificar el rango de fechas.
Jordania

0

Todas las validaciones están vinculadas a las reglas de validación de Java Script definidas en

js / prototype / validation.js

Archivo

Puedes personalizar tu código allí


¿Tiene el código personalizado que funcionará?
Jordania

No recomendaría modificar el archivo principal de Magento js/prototype/validation.js. Puede agregar validaciones personalizadas en un archivo JS separado ...
7ochem
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.