Agrupando elementos com Zend_Form (Fieldset)

Olá, hoje falarei de um assunto simples e fácil de implementar em um formulário html e com Zend_Form, apesar de não parecer a primeira vista também é bem simples com o Zend_Form.

Sem nenhum rodeio ou enrolação descreverei como utilizar o Fieldset.

<?php

class Application_Form_Cadastro extends Zend_Form {

	public function __construct($options = null) {
		parent::__construct ($options);

		//campo nome
		$nome = new Zend_Form_Element_Text('nome');
		$nome->setLabel('Nome: ');
		//campo sobrenome
		$sobrenome = new Zend_Form_Element_Text('sobrenome');
		$sobrenome->setLabel('Sobrenome: ');

		//campo telefone
		$telefone = new Zend_Form_Element_Text('telefone');
		$telefone->setLabel('Telefone: ');
		//campo sobrenome
		$email = new Zend_Form_Element_Text('email');
		$email->setLabel('E-mail: ');

		//adiciona elementos ao formulario
		$this->addElements(array($nome, $sobrenome, $telefone, $email));

		//cria grupo no formulario (fieldset) e sua legenda (legend)
		$this->addDisplayGroup(array('nome','sobrenome'), 'dadosPessoais', array('legend'=>'Dados Pessoais:'));
		//caso queira pode tambem inserir decorators
		//$dPessoal = $this->getDisplayGroup('dadosPessoais');
		//$dPessoal->setDecorators(array com as especificacoes do decorator do fieldset);

		//cria grupo no formulario (fieldset) e sua legenda (legend)
		$this->addDisplayGroup(array('telefone','email'), 'dadosContato', array('legend'=>'Contatos:'));
	}
}

?>

Pronto está ai, simples e fácil!

Publicado por

Daniel Satiro

Tecnólogo em Sistemas para Internet pela Faculdade Sumaré, Bacharel em Sistemas de Informação pela Universidade São Judas Tadeu e Pós-graduado e Gestão de Tecnologia da Informação pela Faculdade de Informática e Administração Paulista. Atuo como analista e desenvolvedor de sistemas web desde 2007.

6 comentários em “Agrupando elementos com Zend_Form (Fieldset)”

  1. Olá sou novo em programação como eu colocaria decoraters:

    no código /cria grupo no formulario (fieldset) e sua legenda (legend)
    $this->addDisplayGroup(array(‘nome’,’sobrenome’), ‘dadosPessoais’, array(‘legend’=>’Dados Pessoais:’));
    //caso queira pode tambem inserir decorators
    //$dPessoal = $this->getDisplayGroup(‘dadosPessoais’);
    //$dPessoal->setDecorators(array com as especificacoes do dec)

    preciso colocar os campos inputs e labels dentro duma div ou a tag p?

    1. Não sei se foi isso que quiz dizer, mas entendi que você quer colocar decorators em um campo de input. Da classe input que você instanciou pode chamar o método “setDecorators” e passar um array com os decorators que lhe interessar. Por exemplo:
      //campo nome
      $nome = new Zend_Form_Element_Text(‘nome’);
      $nome->setLabel(‘Nome: ‘)
      $nome->setDecorators(array(
      ‘ViewHelper’,
      ‘Errors’,
      array(array(‘data’ => ‘HtmlTag’), array(‘tag’ => ‘td’, ‘class’ => ‘element’)),
      array(‘Label’, array(‘tag’ => ‘td’)),
      array(array(‘row’ => ‘HtmlTag’), array(‘tag’ => ‘tr’)),
      ));

      Espero ter ajudado, se não for isso que entendi detalhe melhor sua pergunta que responder melhor.

  2. Olá acho que vai ajudar em parte, mas o que de fato preciso é seguinte: Agrupei alguns campos do zend_form_element num fieldset. Preciso que todos estes campos (3) inputs e suas labels sejam colocadas dentro de uma tag p, dentro do fildset. ou seja

    campo1
    campo2
    campo3

    </fieldset

    1. Olá acho que vai ajudar em parte, mas o que de fato preciso é seguinte: Agrupei alguns campos do zend_form_element num fieldset. Preciso que todos estes campos (3) inputs e suas labels sejam colocadas dentro de uma tag p, dentro do fildset, ou seja,

      campo1
      campo2
      campo3

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.