Arquivo de Dec/2008

08 DecOoops

A versão 5.2.7 do PHP, que havia sido lançado semana passada, foi removida da distribuição.

Ela possuía um erro de segurança na magic_quotes_gpc. Segundo o site, mesmo com essa opção habilitada ela continuava desabilitada. Então, caso alguém tenha atualizado, recomendo que voltem para a versão 5.2.6 até que a 5.2.8 seja lançada.

Notícia original aqui.

Edit: Versão 5.2.8 fresquinha.

05 Dechttp://www.nivaldoarruda.com.br

04 DecFieldset no Zend_Form ou Zend_Dojo_Form

Provavelmente você já teve que separar alguns campos de seus formulários em blocos, utilizando o fieldset, certo? E se ainda não teve, pode ter certeza que um dia terá, hehe ^^.

Como resolver isso no Zend Framework? fácil! “addDisplayGroup

Mas, tenha em mente que o addDisplayGroup irá criar o fieldset exatamente aonde ele foi setado, logo, você deve criar seus forms na sequência de campos e de chamadas do group corretas. Veja aqui um pequeno exemplo:

<?php
Class AnimaisForm extends Zend_Dojo_Form
{
	public function __construct($options=null)
	{
		parent::__construct($options);

        $translate = Zend_Registry::get('translate');
        $this->setTranslator($translate);

        $campo = $this->createElement('ValidationTextBox', 'nome_popular');
        $campo->addFilters(array('StringTrim', 'StripTags'))
                 ->addValidator('NotEmpty')
                 ->setInvalidMessage('Informe o nome do animal.')
	 	         ->addValidator('StringLength', true, array(1,60))
	             ->setRequired(true)
                 ->setLabel('Nome Popular');
        $this->addElement($campo);

	$campo = $this->createElement('ValidationTextBox', 'raca');
        $campo->addFilters(array('StringTrim', 'StripTags'))
                 ->addValidator('NotEmpty')
                 ->setInvalidMessage('Informe a raça do animal.')
	 	         ->addValidator('StringLength', true, array(1,60))
	             ->setRequired(true)
                 ->setLabel('Raça');
        $this->addElement($campo);

	//Aqui vamos agrupar os 2 campos pelo nome.
        $this->addDisplayGroup(array('nome_popular', 'raca'), 'gBasico', array('legend'=>"Dados básicos"));

	$campo = $this->createElement('NumberTextBox', 'idade');
        $campo->addFilter('StringTrim')
                 ->addValidator('int')
                 ->setInvalidMessage('Informe a idade do animal.')
                 ->setRequired(true)
                 ->setAttrib('lang', 'pt-br')
                 ->setLabel('Idade');
        $this->addElement($campo);

	$campo = $this->createElement('NumberTextBox', 'peso');
        $campo->addFilter('StringTrim')
                 ->addValidator('int')
                 ->setInvalidMessage('Informe o peso do animal.')
                 ->setRequired(true)
                 ->setAttrib('lang', 'pt-br')
                 ->setLabel('Peso');
        $this->addElement($campo);

	//Aqui vamos agrupar os 2 campos pelo nome em outro fieldset.
        $this->addDisplayGroup(array('idade', 'peso'), 'gespecifico', array('legend'=>"Dados específicos"));

	}
}
?>

Exemplo sem TitlePane

Bem tranquilo não? Agora ultima dica, se você está utilizando o Dojo também, pode transformar esses fieldsets em TitlePanes, eles ficam com um visual mais interessante e podem esconder o conteúdo ao custo de um clique. Para isso, apenas substítua a linha do “addDisplayGroup” para:

         $this->addDisplayGroup(array('nome_popular', 'raca'), 'gBasico', array("dojoType"=>'dijit.TitlePane', 'title'=>"Dados básicos"));

e

         $this->addDisplayGroup(array('idade', 'peso'), 'gespecifico', array("dojoType"=>'dijit.TitlePane', 'title'=>"Dados específicos"));

Você também precisará acrescentar no view, que irá chamar essa form, uma chamada Dojo para importar o módulo do TitlePane (e levando em conta que você já possui a chamada do dojo em seu layout). Dessa forma:

<?php
   $this->dojo()->requireModule('dijit.TitlePane');
?>

Exemplo 01 com dojo

Exemplo 02 com dojo

É isso ^^

SEO Powered by Platinum SEO from Techblissonline