+2

Usando o package HTML QuickForm da PEAR (primeira parte)

criado por Paulo Roberto de Castro Filho em 17/03/2004 11:22am
Esse package vem para simplificar uma coisa que eu acho muito chata, que é criar formularios consistentes. A primeira vista usar o HTML Form seria a melhor opção, mas acontece que a QuickForm apresenta algumas vantagens sobre a HTML Form como:

Adicionar regras tanto do lado do cliente (com Javascript) como do lado servidor.
Criar um controle para form sequenciais.
Pode-se ser integrada a Smarty.
Internacionalização
Na minha opinião ser mais facil de usar.

Vamos ao primeiro exemplo:
<?php
// Include do package QuickForm
require_once 'HTML/QuickForm.php';

// Instânciando
$form = new HTML_QuickForm( 'noticiasForm1' );
		
// Adicionando elementos ao form
$form->addElement('header', null, 'Cadastro de Noticias');
$form->addElement( 'text', 'title', 'Titulo:', array( 'size' => 80, 'maxlength' => 250 ) );
$form->addElement( 'textArea', 'smallText', 'Noticia', array( 'cols' => 85, 'rows' => 10 ) );
		
// For fim mostrando
$form->display();
?>



Pronto nosso primeiro exemplo pelo código deu para perceber algumas coisas:
Fazendo o include da classe:
require_once 'HTML/QuickForm.php';

Você precisa fazer o download do site: http://pear.php.net/package/HTML_QuickForm
Só descompactar e pronto.

Associando a variável form a classe HTML_QuickForm:
$form = new HTML_QuickForm( 'noticiasForm1' );

O método padrão é o POST mais você pode mudar assim:
$form = new HTML_QuickForm( 'noticiasForm1' , 'GET' );

Adicionando um título ao form:
$form->addElement('header', null, 'Cadastro de Noticias');

Adicionando um elemento ao form:
$form->addElement( 'text', 'title', 'Titulo:', array( 'size' => 80, 'maxlength' => 250 ) );

No HTML ficaria assim:
<input size="80" maxlength="250" name="title" type="text" />

O QuickForm coloca alguns &lt;td&gt; para deixar tudo bonito (tem como formatar isso, mas vamos com calma).

Veja a sintaxe do método addElement.
addElement ( string type, string name, string value, array tags => value )

Dentro do type podemos ter:
Básicos:
Button, Checkbox, File, Hidden, Image, Password, Radio, Reset, Select, Submit, Text, Textarea.

Além dos customizados:
Advcheckbox, Autocomplete, Date, Group, Header, Hiddenselect, Hierselect, Html, Link e Static.
As customizadas não veremos nesse texto.

As tags são iguais ao HTML.

Comentários:

Mostrando 1 - 10 de 13 comentários
Paulo Moreira disse:
baixei essas classes não não sei como instalar no easy php.. tem vários arquivos dependentes que não veem juntos com os arquivos baixados e a extensão não é php... como instalo elas no easyphp1.7 no windows?
29/12/2005 8:48am (~11 anos atrás)

Ricardo disse:
ae cara nesse exemplo eu to usando a extensão PEAR::DB pra conecta, executar querys e trazer resultados...

-----------------------------------

$dsn= "mysql://$user:$pass@$host/$bd";

// Conectando ao BD
$conn= DB::connect($dsn);
if (DB::isError($conn)) {
die ($conn->getMessage());
}

$sql= "SELECT nome, email FROM usuario ORDER by nome ASC";

// executando a consulta
$res= $conn->query($sql);
$i = 1;
while ($lin = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
$nome = $lin['nome'];
$email = $lin['usuario_nivel'];

$arraySelect[$i] = "$login";
$i++;
}

-------------------------


espero lhe dado uma base de como funciona.

falow
25/05/2005 2:05pm (~11 anos atrás)

Carla H disse:
Olá.

Notei que no seu exemplo, não aparecem palavras acentuadas. Ex:
$form->addElement('header', null, 'Cadastro de Noticias');
$form->addRule('title', 'Titulo nao pode estar em branco', 'required', null, 'client');

No browser aparece: not&#55529;as,t&#56629;lo no lugar de notícias e título.

Estou tentando conseguir fazer aparecer os acentos, mas não estou tendo sucesso. Você sabe se existe alguma configuração para mostrar os acentos?

Valeu
29/06/2004 12:02pm (~12 anos atrás)

Ademir Lima disse:
Não estou conseguindo construir um combobox, usando uma consulta no mysql, alguem tem algum exemplo?
28/04/2004 12:33am (~12 anos atrás)

Olá, pessoal. Gostei mutio do artigo. Isso com certeza irá facilir a vida de muitos na criação de páginas de administração do site.
23/04/2004 2:52pm (~12 anos atrás)

I am Gita disse:
Somente instalando que posso usar esta classe? Não tem alguma forma alternativa de usá-la?
Para quem não tem acesso ao provedor fica difícil uma vez que já tentei falar com o administrador pra incluir e não rolou.

Valeu
nu+1[]
IamGita
13/04/2004 1:18am (~12 anos atrás)

Thiago, não consegui utilizar o link responder mas vai aqui como comentário mesmo :)
Para instalar este pacote da PEAR assim com qualquer outro basta usar o pear.bat que fica na pasta do php. Se este programinha não estiver lá rode o go-pear.bat e siga as instruções para instalá-lo. O procedimento de instalação é muito simples.
Este pacote tem uma dependência: o HTML_Common. Temos que instalar ele antes.
Vamos lá:
entre na pasta do seu php (ex: c:\php)

C:\php>pear install HTML_Common
C:\php>pear install HTML_QuickForm

Pronto, agora para incluir este pacote para você poder utiliza-lo basta colocar o seguinte no começo do fonte:

require_once 'HTML/QuickForm.php';

Não deu certo? Verifique se a variável include_path no seu php.ini contém o caminho certo para a pasta onde estão seus pacotes da PEAR (Ex: include_path=".;C:\php\pear").
07/04/2004 1:15pm (~12 anos atrás)

Paulo, ótimo artigo. Só que na hora de fazer funcionar eu não consegui. Você poderia colocar melhor como "instalar" esta biblioteca.
04/04/2004 9:23pm (~12 anos atrás)

Não cheguei a estudar ainda essa classe, mas já encontrei uma ótima finalidade para ele.

Não sei se esses forms suportam css por exemplo (se suportar ótimo), por que muitos sites que precisam de uma interface mais "futurista" muitas vezes pedem formulários cheios de detalhezinhos e tal.

Mas a QuickForm me será muito útil para o desenvolvimento de interfaces de administração, ou seja, a vulgar admin dos sites

[]`s

Ragen
18/03/2004 6:09pm (~12 anos atrás)

Vou postar alguns exemplos, mas de uma olhada:
http://pear.php.net/manual/en/package.html.html-quickform.html-quickform-renderer-arraysmarty.php

No tudo oq vc disse é certo, mas para mim como formularios envolvem regras (usando regex por exemplo) eu desenvolvo as mesmas em php, e o 'designer' coloca no lugar que ele quer.
18/03/2004 7:50am (~12 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)