Para todo mundo que é fã da IDE Visual Studio e sofre quando tem que programar em PHP surgiu um plugin que permite ter as funcionalidades do VS com o PHP, ou seja, IntelliSense, debug de javascript, etc.

Página Oficial: Jcx Software

Post migrado:

http://programatik.soucafecomleite.com.br/mascara-php

Quando utilizamos o zend framework para cada action chamada ele faz forward automaticamente para uma pagina do mesmo nome e quando estamos utilizando AJAX esse não é o objetivo. Para resolver esse problema basta colocar a linha no corpo da action.

  $this->_helper->viewRenderer->setNoRender();

Alguns tutoriais antigos que coloquei sobre AJAX eu utilizava uma página que apenas ecoava o objeto, isso não é necessário utilizando o recurso acima e para colocar o objeto no response para poder ler na página basta fazer.

$this->_response->appendBody($objJson);

O pessoal do zend liberou a versão 1.6 RC 1(Release Candidate), quem quiser testar as novas funcionalidades.

http://devzone.zend.com/article/3712-Zend-Framework-1.6-Release-Candidate-1-now-available

Existe uma versão do mesmo tutorial porém utilizando AJAX aqui:

http://programatik.soucafecomleite.com.br/zend-validate-com-ajax

 

Vou mostrar o uso básico do Zend_Validate, porém não tem segredo. Primeiro começamos com um formulário básico.


  <form name="frm" action="<? echo $this->baseUrl ?>/Produto/insere" method="post">
<table>
<tr>
<td>
      Nome do Produto:</td>
<td>
       <input type="text" name="nomeProduto"/></td>
</tr>
<tr>
<td>
      Valor Produto:</td>
<td>
      <input type="text" name="valorProduto" /></td>
</tr>
</table>
<input type="submit" value="Inserir" />
  </form>

		class ProdutoController extends Zend_Controller_Action
	{

		function insere(){

			// Pegando os valores da camada de visao

			$nome       = $this->_request->getParam("nomeProduto");
			$valor      = $this->_request->getParam("valorProduto");

			// Dando Loader na classes de validacao
			Zend_Loader::loadClass('Zend_Validate_StringLength');
			Zend_Loader::loadClass('Zend_Validate_Float');

			// Instanciando os validadores
			$validadorNome       = new Zend_Validate_StringLength(1,100);
			$validadorValor      = new Zend_Validate_Float();

			// Setando as mensagens e os tipos de validação
			$validadorNome->setMessage(
					"Campo nome é obrigatório".,
					Zend_Validate_StringLength::TOO_SHORT);

			$validadorNome->setMessage(
					"Campo nome maior que o permitido.",
					Zend_Validate_StringLength::TOO_LONG);

			$validadorValor->setMessage(
					"Campo valor nao é um número válido.",
					Zend_Validate_Float::NOT_FLOAT);

			// Verificando se os valores digitados sao válidos
			if ( $validadorNome->isValid(trim($nome)) &&
				 $validadorNome->isValid($nome) &&
				 $validadorValor->isValid($valor) ){

				// Executa os procedimentos para insercao	

			} else {
				// Deu erro na validacao

				$msg = array_merge( $validadorNome->getMessages(), $validadorValor->getMessages() );

// Na variavel $msg vai ter todos os erros apontados no formulario,
//basta exibir em um alert ou direto no corpo da página.
			}

		}

	}

Uma boa prática é carregar todas as mensagens em um arquivo texto ao invés de utilizar as mensagens direto no arquivo do controller, apesar de php ser uma linguagem script e nao ser necessário a compilação de todo o sistema para apenas a troca de uma mensagem, um arquivo texto com todas as mensagens é válido pois iremos ter centralizado todas as mensagens.

Pode usar um absctract controller que faz esse papel, colocando a mensagem na camada de visao pois ela poderá usar em todos os controladores.

http://www.quickref.org – Referência geral

http://www.w3schools.com – Site de padrões e referência

http://www.maujor.com – CSS, Tabless

http://www.koders.com – Site de busca de códigos

http://www.codefetch.com – Site de busca que procura código de livros que são gratuitamente disponibilizado pelos autores.

http://www.zamzar.com – Conversão de arquivos online, esse último que não tem muita relação com o escopo do blog mas mesmo assim é uma ótima ferramenta.

Post migrado em:

http://programatik.soucafecomleite.com.br/fluent-interfaces