Validação de Data de Início e Término

14

Eu tenho trabalhado no formulário de administração onde quero que o usuário selecione Start Datee End Date.

Eu tenho que fornecer validação de modo que o End Datedeve ser maior que Start Date.

insira a descrição da imagem aqui

Alguém poderia me ajudar a fornecer a classe de validação padrão do Magento para as datas de início e término com o cenário explicado acima?

Se não for possível com a validação padrão do Magento, os pls postam o código JS personalizado.

Também está no meu formulário para o período

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

obrigado

Jordânia
fonte

Respostas:

8

Tente usar a validate-date-rangeclasse de validador do Magento em seus campos.

Se você adicionar isso aos dois campos, ele obterá a data e comparará os dois valores.

Se você obtiver o valor atualizado usando o seguinte código:

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

Então, o que você precisa fazer é adicionar uma classe no formato date-range-your_attribute_code-frome date-range-your_attribute_code-to. Fazer isso significa que o Magento é capaz de vincular os dois campos.

Para um exemplo disso, consulte a guia de design nas páginas do CMS. app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php

A seguir, é apresentada uma explicação mais detalhada sobre as classes:

  1. validate-date: isso garante que o valor inserido seja uma data válida,
  2. validate-date-range: faz a comparação entre duas datas quando as classes estão corretas,
  3. date-range-custom_data-from, date-range-custom_data-to: Estes se ligam as duas datas para que eles possam ser usados no intervalo de datas cheque, nota que estes devem ser os mesmos para além dos -toe-from significa que pode ser date-range-xxxx-frome date-range-xxxx-to, respectivamente.
David Manners
fonte
Duas perguntas: 1 ) How does this work -> 'classe' => 'entrada obrigatória validar-data validar-data-intervalo data-intervalo-personalizado-tema-para-2' ) How to input data-intervalo-seu-código-de-atributo-de-porque não tenho meu código de atributo personalizado.
Jordan
@ Jordan, como você está fazendo o formulário se não possui o código de atributo? Tecnicamente, isso não importa, desde que os dois tenham a mesma coisa attribute_code, apenas para vincular os dois campos.
David Manners
Eu apenas usei a classe mencionada app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.phpe funcionou. Preciso mudar isso?
Jordan
1
@ Jordan, você precisa dos sufixos -frome -tode suas aulas. Tente date-range-start_data-fromedate-range-start_data-to
David Manners
1
Muito obrigado pela explicação clara. O que importa é um código de atributo exclusivo para - para - e para verificar o período.
Jordan
0

Toda a validação está vinculada às regras de validação do Java Script definidas em

js / prototype / validation.js

Arquivo

Você pode personalizar seu código lá

TBI Infotech
fonte
Você tem o código personalizado que funcionará?
Jordan
Eu desencorajaria modificar o arquivo principal do Magento js/prototype/validation.js. Você pode adicionar validações personalizadas em um arquivo JS separado ...
7ochem 03/03