A melhor parceira de TI para o seu negócio English version

Framework docs

Apresentação > Elementos de formulário > Formulários personalizados

Conheça mais sobre com o livro:

  • Instalação e configuração;
  • Modelos, persistência e BD;
  • Componentes de apresentação;
  • Cadastros e listagens;
  • Logins, permissões, relatórios;
  • Desenvolvimento com Studio Pro.
Ver detalhes...

Esse exemplo demonstra o funcionamento básico dos elementos de entrada de dados que podem ser utilizados no framework. Outros elementos complexos serão demonstrados posteriormente. Nesse exemplo, iremos utilizar os widgets TEntry, TPassword, TDate e TText.
O formulário é uma classe especial responsável pela manipulação do envio de dados. O objeto TForm implementa métodos como getData() para ober os dados de um formulário e setData() para atribuir os dados para o formulário.
O objeto TForm oferece o método add(). Isto significa que podemos usar qualquer container para organizar os campos de um formulário. Nesse exemplo, estamos usando o container TTable para organizar os campos do formulário utilizando linhas (TTableRow) e colunas (TTableCell).

Clique aqui para
demonstração real

Exemplo

  1. <?php
  2. /**
  3.  * FormCustomView
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class FormCustomView extends TPage
  13. {
  14.     private $form;
  15.     
  16.     /**
  17.      * Class constructor
  18.      * Creates the page
  19.      */
  20.     function __construct()
  21.     {
  22.         parent::__construct();
  23.         
  24.         // creates the form
  25.         $this->form = new TForm('customform');
  26.         
  27.         // creates the notebook
  28.         $notebook = new BootstrapNotebookWrapper(new TNotebook);
  29.         $this->form->add($notebook);
  30.         
  31.         // creates the containers for each notebook page
  32.         $page1 = new TTable;
  33.         $page2 = new TTable;
  34.         $page1->style 'padding: 10px';
  35.         $page2->style 'padding: 10px';
  36.         
  37.         // adds two pages in the notebook
  38.         $notebook->appendPage('Page 1'$page1);
  39.         $notebook->appendPage('Page 2'$page2);
  40.         
  41.         // create the form fields
  42.         $field1      = new TEntry('field1');
  43.         $field2      = new TEntry('field2');
  44.         $field3      = new TDate('field3');
  45.         $field4      = new TDate('field4');
  46.         $field5      = new TColor('field5');
  47.         $field6      = new TCombo('field6');
  48.         $field7      = new TEntry('field7');
  49.         $field8      = new TRadioGroup('field8');
  50.         $field9      = new TCheckGroup('field9');
  51.         $field10     = new TSelect('field10');
  52.         
  53.         $field1->setSize(40);
  54.         $field2->setSize(300);
  55.         $field3->setSize(100);
  56.         $field4->setSize(100);
  57.         $field5->setSize(100);
  58.         $field6->setSize(120);
  59.         $field7->setSize(260);
  60.         $field8->setSize(120);
  61.         $field9->setSize(120);
  62.         $field10->setSize(20070);
  63.         
  64.         $items = array( 'a' => 'Item a''b' => 'Item b''c' => 'Item c' );
  65.         $field6->addItems($items);
  66.         $field8->addItems($items);
  67.         $field9->addItems($items);
  68.         $field10->addItems($items);
  69.         $field8->setLayout('horizontal');
  70.         $field9->setLayout('horizontal');
  71.         
  72.         // add rows for the fields
  73.         $page1->addRowSet$l1=new TLabel('Field 1'), $field1 );
  74.         $page1->addRowSet( new TLabel('Field 2'), $field2 );
  75.         $page1->addRowSet( new TLabel('Field 3'), array ($field3, new TLabel('Field 4'), $field4) );
  76.         $page1->addRowSet( new TLabel('Field 5'), $field5 );
  77.         $page1->addRowSet( new TLabel('Field 6'), $field6 );
  78.         
  79.         $page2->addRowSet$l7=new TLabel('Field 7'), $field7 );
  80.         $page2->addRowSet( new TLabel('Field 8'), $field8 );
  81.         $page2->addRowSet( new TLabel('Field 9'), $field9 );
  82.         $page2->addRowSet( new TLabel('Field 10'), $field10 );
  83.         
  84.         $l1->setSize(100);
  85.         $l7->setSize(100);
  86.         
  87.         // creates the action button
  88.         $button1 = new TButton('action1');
  89.         $button1->setAction(new TAction(array($this'onSend')), 'Send');
  90.         $button1->setImage('fa:check-circle-o green');
  91.         
  92.         // define wich are the form fields
  93.         $this->form->setFields(array($field1$field2$field3$field4$field5,
  94.                                      $field6$field7$field8$field9$field10$button1));
  95.         
  96.         $panel = new TPanelGroup('Custom Tabbed Form');
  97.         $panel->add($this->form);
  98.         $panel->addFooter($button1);
  99.         
  100.         // wrap the page content using vertical box
  101.         $vbox = new TVBox;
  102.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  103.         $vbox->add($panel);
  104.         
  105.         parent::add($vbox);
  106.     }
  107.     
  108.     /**
  109.      * Get the post data
  110.      */
  111.     public function onSend($param)
  112.     {
  113.         $data $this->form->getData();
  114.         $this->form->setData($data);
  115.         
  116.         new TMessage('info'str_replace(',''<br>'json_encode($data)));
  117.     }
  118. }