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

Jordán
fuente

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.
David modales
fuente
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í

TBI Infotech
fuente
¿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