O Zend_Form simplifica e muito a nossa vida durante a criação de um formulário. Ele executa algumas tarefas necessárias como:
- Filtra e valida a entrada de dados;
- Ordena os campos;
- Renderiza o formulário e os campos, incluindo escapar;
- Agrupa os campos do formulário;
- Configura os campos e o nível dos formulários;
Zend_Form faz uso de diversos componentes do Zend Framework para realizar seus objetivos, incluindo Zend_Config, Zend_Validate, Zend_Filter, Zend_Loader_PluginLoader e, opcionalmente, Zend_View.
Criando uma classe estendida de Zend_Form
Bom, para uma arquitetura MVC é muito importante a organização e separação dos tipos de dados, com isso é de suma importância que se crie uma pasta dentro da pasta lybrary, onde ficarão todos os formulários de aplicação.

Dessa forma, criaremos a nossa classe estendida de Zend_Form, o Exemplo.php.
class Sample_Form_Exemplo extends Zend_Form
{
public function init()
{
}
}
São primordiais algumas configurações iniciais no formulário
// Setar a action do formulário
$this->setAction('http://danieldeveloper.com');
// Setar o método (POST | GET)
$this->setMethod('POST');
Podemos também setar outros atributos do formulário utilizando o setAttrib ou setAttribs, esse último usando um array com as atribuições. Vamos setar então o ID do formulário.
$this->setAttrib('id', 'exemplo');
Adicionando elementos no formulário
Os elementos dos formulários são muitos, separei os mais utilizados e já mostrando como eles devem ser instanciados e criados. O parâmetro passado para a função é o nome do campo, ou seja, vai ser atribuído ao atributo name do elemento.
// Cria um botão
$botao = new Zend_Form_Element('botao');
// Cria um campo de marcação(checkbox)
$check = new Zend_Form_Element_Checkbox('check');
// Cria um campo para upload de arquivos
$arquivo = new Zend_Form_Element_File('arquivo');
// Cria um campo oculto
$oculto = new Zend_Form_Element_Hidden('oculto');
// Cria um campo de seleção
$selecione = new Zend_Form_Element_Select('selecione');
// Cria um campo de senha
$senha = new Zend_Form_Element_Password('senha');
// Cria um botão para submeter o formulário
$submeter = new Zend_Form_Element_Submit('submeter');
// Cria um campo textarea
$texto = new Zend_Form_Element_Textarea('texto');
Também podemos editar os elementos HTML dos nossos campos, como label, id e class.
$texto = new Zend_Form_Element_Textarea('texto');
$texto->setLabel('Texto')
->setAttribs(array(
'id' => 'iddocampo',
'class' => 'nomedaclasse'
)
);
Para que possamos confirmar o adicionamento destes elementos no formulário, é necessário que citemos cada elemento criado, dentro da função addElements, assim:
$this->addElements(array(
$botao,
$check,
$arquivo,
$oculto,
$senha
));
Sem isso, os campos não serão mostrados no formulário.
Adicionando validadores(Validators)
Por padrão, o nosso formulário não tem nenhum validador. Para validadar nossos elementos, mostrarei os seguintes códigos com as validações mais utilizadas e como usa-las.
// Aceita somente valores alfanuméricos
->addValidator( new Zend_Validate_Alnum())
// Aceita somente valores em formato de data
->addValidator( new Zend_Validate_Date())
// Aceita somente valores em formato de email
->addValidator( new Zend_Validate_EmailAddress())
// Aceita somente valores hexadecimais
->addValidator( new Zend_Validate_Hex())
// Aceita somente valores inteiros
->addValidator( new Zend_Validate_Int())
// Aceita somente um endereço IP
->addValidator( new Zend_Validate_Ip())
// Aceita somente se o campo não for vazio
->addValidator( new Zend_Validate_NotEmpty())
// Aceita somente se caber dentro da expressão regular
->addValidator( new Zend_Validate_Regex('/^[a-z]/i'));
Também podemos validar fazendo uma verificação no elemento se ele é requerido. Setamos então o elemento como requerido.
->setRequired()
Adiconando filtros(Filters)
Os filtros são instanciados como os validadores, e também por padrão não vem junto ao formulário. Vamos ver alguns filtros mais usados e como cria-los.
// Filtra caracteres alfanuméricos
->addFilter( new Zend_Filter_Alnum() )
// Filtra números inteiros
->addFilter( new Zend_Filter_Int() )
// Filtra os caracteres mudando letras para minúsculas
->addFilter( new Zend_Filter_StringToLower() )
// Filtra os caracteres mudando letras para maiúsculas
->addFilter( new Zend_Filter_StringToUpper() )
Após todo este trabalho, agora precisamos exibir nosso formulário. No controller desejado é necessário criar uma instância do formulário.
$objFormExemplo = new Sample_Form_Exemplo();
e envia-lo para a view.
$this->view->objFormExemplo = $objFormExemplo;
Na view é necessário apenas dar um “echo” na variável e pronto!
echo $this->objFormExemplo;
Bom developers, essa foi uma tentativa de explicar a vocês como funciona o Zend_Form, o quão é grande o poder do Zend Framework e seus códigos complexos que hoje nem são complexos mais! Aos poucos vamos dominando cada dia mais esse monstro das aplicações web!
Abraços e postem suas dúvidas!