Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Duardaum

Validar e Comparar Data e Hora Zend_Validate_Date

Recommended Posts

Olá pessoal. olha eu aqui de novo..

 

Gostaria de saber se alguem sabe como faço para validar a data que vem por um post do formulario

do Zend_form, comparando com a data atual e fazer com que o formulario não valide dizendo que a data

é inválida!!

 

ou fazer parar a validação no meio do formulario.. qualquer coisa to tipo que mostre que está errado??

 

Alguem ja passou por isso..??

Compartilhar este post


Link para o post
Compartilhar em outros sites

// Recuperando todos os dados
$post = $this->getRequest()->getParams();

$data_nasc = Util::dateToDb($post['nascimento']);

if(!Zend_date::isDate($data_nasc, 'yyyy-MM-dd')){
	$message[] = array('error', 'Data de nascimento inválida.');
} else {
	$post['nascimento'] = $data_nasc;
}

função do Util.php

 

static public function dateToDb($data='')
	{
		$return = null;
		$options['format'] = '%d/%m/%Y';
		$options['min']    = '';
		$options['max']    = '';
		if(!Validacao::validaData($data, $options))
		{
			$data = '01/01/1970';
		}
		if (!empty($data))
		{
			$dataArray = explode("/", $data, 3);
			if (count($dataArray) == 3)
			{
				$return = date("Y-m-d", mktime(0,0,0,$dataArray[1],$dataArray[0],$dataArray[2]));
			}
		}
		return $return;
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois pra mostrar a data do modo convencional você pode usar uma funçãozinha pra fazer o contrário

 

static public function dbToDate($data='', $format='d/m/Y')
{
	$return = null;
	if (!empty($data))
	{
		$dataParts 	= explode(' ', $data);
		$data 		= $dataParts[0];
		$hora		= (isset($dataParts[1])) ? $dataParts[1] : '00:00:00';
		$dataArray 	= explode('-', $data, 3);
		$horaArray 	= explode(':', $hora, 3);
		if (count($dataArray) == 3)
		{
			$return = date($format, mktime($horaArray[0], $horaArray[1], $horaArray[2], $dataArray[1], $dataArray[2], $dataArray[0]));
		}
	}
	return $return;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Validei ele no javascript apenas..

 

E se o cara navegar no site ou entrar na aplicação com o Javascript desabilitado? Então nunca confie na validação client side. Sempre valide no server side também.

 

Para resolver este problema, você pude utilizar o filter LocalizedToNormalized para tratar antes de salvar no banco, em conjunto com o Zend_Date(). Na hora de exibir para o usuário, só o Zend_Date resolve o problema.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.