Utilizando PEAR

Recentemente decidi procurar por uma solução que aerodinamizasse o processo de construir formulários. Um de meus objetivos durante esta pesquisa era procurar um mecanismo que permitisse que eu me focasse em executar a lógica do negócio associada com a aplicação ao invés de me preocupar com coisas mundanas como a escrita do código do HTML ou scripting validations usando o Javascript.

[ Hits: 31.313 ]

Por: Pedro César em 20/04/2006


Agrupando elementos do Form



O próximo exemplo irá começar onde o anterior parou, ele nos mostrará a habilidade natural dessa biblioteca de "agrupar" os elementos do form.

Carregue o código do link abaixo no seu browser:
E você terá a seguinte tela:


Para aprender mais sobre o agrupamento de elementos do formulário de uma analisada no código a seguir:

<?php
// snip
// Creates a group of text inputs
$obj_first_name = &HTML_QuickForm::createElement('text', '', '', array('size' => 30, 'maxlength' => 30));
$obj_last_name = &HTML_QuickForm::createElement('text', '', '', array('size' => 30, 'maxlength' => 30));
$obj_registration_form->addGroup(array($obj_first_name, $obj_last_name), 'txtFullName', 'Full Name:', ' ');
// snip
?>

No primeiro exemplo utilizei apenas um campo para o nome completo, seria interessante que pudéssemos exibir dois campos, um para o primeiro nome e outro para o último nome e assim melhorar a formatação do form. Essa habilidade do HTML_QuickForm() de exibir dois campos e os tratar como uma única entidade é muito útil.

O agrupamento dos campos "primeiro nome" e "último nome" é apenas um dos possíveis exemplos, outro exemplo interessante seria para a entrada de número de cartão de crédito. O usuário irá entrar com os número em grupos de 4, assim como eles se apresentam no próprio cartão, facilitando a usabilidade do formulário.

Voltando ao script, eu chamei o método estático createElement() para criar uma instância do objeto HTML_QuickForm(). Os parâmetros desse método imitam as do método addElement(), e a natureza do elemento a ser criado depende da palavra chave enviada no método.

Uma vez que eu defini todos os elementos de um "grupo particular," eu invoco o método do addGroup() do objeto de HTML_QuickForm() e passo um array, contendo os elementos, junto com um "nome" e uma "label" para o grupo.

O quarto parâmetro representa o separador utilizado entre os elementos do grupo - eu passei somente um espaço em branco e deixei os campos na mesma linha.

Agora deixe-me levar a sua atenção para os outros agrupamentos que criei nesse exemplo.

<?php
// snip
// create a checkbox group
$obj_genre[] = &HTML_QuickForm::createElement('checkbox', 'Alternative', null, 'Alternative');
$obj_genre[] = &HTML_QuickForm::createElement('checkbox', 'Hip-Hop', null, 'Hip-Hop');
$obj_genre[] = &HTML_QuickForm::createElement('checkbox', 'Other', null, 'Other');
$obj_registration_form->addGroup($obj_genre, 'chkGenre', 'Group Genre:', '<br />');
// create a radio button group
$obj_type[] = &HTML_QuickForm::createElement('radio', NULL, NULL, 'Male Solo', 'Male_Solo');
$obj_type[] = &HTML_QuickForm::createElement('radio', NULL, NULL, 'Female Solo', 'Female_Solo');
$obj_registration_form->addGroup($obj_type, 'radGroupType', 'Group Type:');
// create a multiple select drop down
$obj_registration_form->addElement('select', 'ddlLookingFor', 'Looking For:', array ("Publishing_Deal" => "Publishing Deal", "Label_Deal" => "Label Deal","Management_Deal" => "Management Deal", "Other" => "Other"), array("size" => "3", "multiple"));
// snip
?>
Aqui eu criei um grupo de checkbox e outro de radiobuttons usando o método estático createElement().Nesse caso eu atribuí os objetos resultantes do elemento em uma disposição. Em seguida, eu passei esta disposição dos objetos diretamente como a entrada ao método do addGroup() para renderizá-los no browser. Note o uso de quebra de linha - <BR> - , como um separador para o elemento "checkbox" - isto indica cada checkbox em uma linha nova.
<?php
// snip
// create a multiple select drop down
$obj_registration_form->addElement('select', 'ddlLookingFor', 'Looking For:', array ("Publishing_Deal" => "Publishing Deal", "Label_Deal" => "Label Deal","Management_Deal" => "Management Deal", "Other" => "Other"), array("size" => "3", "multiple"));
// snip
// add a hidden value
$obj_registration_form->addElement('hidden', 'txtReferrer', 'http://www.mysite.com');
// snip
?>
Em seguida eu adicionei um <SELECT> múltiplo, e isso e muito fácil, pois basta passar valores nos parâmetros “size” e “múltiplo” no método addElement().
Vimos também no código acima “elemento oculto” <HIDDEN>.
<?php
// snip
// creates a group of buttons to be displayed at the bottom of the form
$obj_submit[] = &HTML_QuickForm::createElement('submit', 'btnSubmit', 'Register');
$obj_submit[] = &HTML_QuickForm::createElement('reset', 'btnReset', 'Start Again');
$obj_registration_form->addGroup($obj_submit, '', '', '  ');
// snip
?>

No código acima coloquei dois elementos agrupados sendo exibidos na mesma linha.

Iremos agora para a validação que é uma parte fundamental para a segurança e consistência de nosso formulário. Já vimos como renderizar os elementos HTML, agora veremos como validar os dados que são enviados através desses elementos.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Agrupando elementos do Form
   3. Validando os dados do formulário
   4. Persistindo os dados no banco MySQL
Outros artigos deste autor

Paginação de resultados com a classe ADODB

Uma introdução à biblioteca GD

Uma introdução à classe ADODB

Dicas simples para dar mais usabilidades aos formulários

Leitura recomendada

Aumente sua produção em PHP

Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)

Administrando usuários no GNU/Linux e Samba via web com PHP

Organizando projetos com a classe FastTemplate (parte 1)

Trabalhando conteúdo dinâmico com Smarty

  
Comentários
[1] Comentário enviado por removido em 20/04/2006 - 02:58h

O PEAR é um repositório de diversas classes prontas. Uma delas, muito útil, é a PEAR-DB, utilizada como forma de abstrair a integração com diversos SGBD's modificando uma única linha de configuração.

[2] Comentário enviado por celiojs em 20/04/2006 - 14:16h

Realmente o PEAR parece ajudar.
Muito bom o seu artigo.
Parabéns!!

[3] Comentário enviado por redstyle em 20/04/2006 - 14:45h

Alguém aqui já instalou alguma classe manualmente ? Ou seja, não usou os comandos linux ou o go-pear do windows.

É que se você fizer um sistema e tem controle no server blz...mas e em sites hospedados eles não tem essa classe.

Tem como subir os arquivos e fazer funcionar corretamente?
Tentei, mas sempre dava caminho de includes errado já que uma classe chama a outra.

Muito bom o artigo, realmente ajuda muito.

Dica pra validar com javascript é a biblioteca YAV http://yav.sourceforge.net

T+

[4] Comentário enviado por gurski em 20/04/2006 - 22:04h

Otimo artigo, estou utilizando a classe HTML_Template_IT junto com a HTML_QuickForm e seu artigo vai ajudar bastante.

[5] Comentário enviado por taiar em 05/02/2009 - 08:47h

Excelente artigo.

Abordou muito bem os aspectos que qualquer um precisa na prática.

Excelente!


Contribuir com comentário