Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TFieldList não é adiciona ao formulário Olá, a todos, Estou tendo um problema ao tentar adicionar o componente TFieldList ao formulário, porém não estou tendo sucesso. Aguém consegue me auxliar. Segue código fonte abaixo e imagem com a descrição do erro. ...
RB
TFieldList não é adiciona ao formulário  
Olá, a todos,

Estou tendo um problema ao tentar adicionar o componente TFieldList ao formulário, porém não estou tendo sucesso.

Aguém consegue me auxliar.

Segue código fonte abaixo e imagem com a descrição do erro.


  1. <?php
  2. class ClienteFisico extends TPage
  3. {
  4.     private $form;    
  5.     private $db 'teste';
  6.     
  7.     private $contato_list;
  8.     private $telefone_list;
  9.   private $contacts;
  10.     private $telefones;
  11.     /**
  12.      * Class constructor
  13.      * Creates the page
  14.      */
  15.     public function __construct()
  16.     {
  17.             parent::__construct();
  18.             parent::include_css('app/resources/form.css');
  19.             $this->form = new BootstrapFormBuilder('form_fisico');
  20.             $this->form->setFormTitle('');
  21.             $this->form->setFieldSizes('100%');
  22.             $this->form->style 'border 1px solid #546';
  23.             $this->form->generateAria(); // automatic aria-label
  24.             $this->form->appendPage('Dados Pessoais');
  25.             $id              = new TEntry('id');
  26.             $nome            = new TEntry('nome');
  27.             $cpf             = new TEntry('cpf');
  28.             $rg              = new TEntry('rg');
  29.             $uf_rg           = new TEntry('uf_rg');
  30.             $data_emissao_rg = new TDate('data_emissao_rg');
  31.             $data_nascimento = new TDate('data_nascimento');
  32.             $genero_id       = new TCombo('genero_id');
  33.             $estado_civil_id = new TDBUniqueSearch('estado_civil_id'$this->db'EstadoCivil''id''nome');
  34.             $homephone     = new TEntry('homephone');
  35.             $naturalidade     = new TEntry('naturalidade');
  36.             $street        = new TEntry('logradouro');
  37.             $number        = new TEntry('numero');
  38.             $complemento   = new TEntry('complemento');
  39.             $neighborhood  = new TEntry('bairro');
  40.             $localidade    = new TEntry('localidade');
  41.             $municipio     = new TEntry('municipio');
  42.             $state         = new TEntry('uf');
  43.             $cep           = new TEntry('cep');
  44.             $id->setEditable(false);
  45.             $genero_id->addItems(['1' => 'Masculino''2' => 'Feminino']);
  46.             //formata mascaras
  47.             $cpf->setMask('999.999.999-99');
  48.             $cep->setMask('99.999-999'true);
  49.             $data_nascimento->setMask('dd/mm/yyyy');
  50.             $data_emissao_rg->setMask('dd/mm/yyyy');
  51.             $homephone->setMask('(99)9999-99999');
  52.             $data_nascimento->setDatabaseMask('yyyy-mm-dd');
  53.             $data_emissao_rg->setDatabaseMask('yyyy-mm-dd');
  54.             $row $this->form->addFields( [ new TLabel('Código'),$id ],
  55.                                                                          [ new TLabel('Nome'),$nome ],
  56.                                                                          [ new TLabel('Data de Nascimento'),$data_nascimento ],
  57.                                                                          [ new TLabel('Genero'),$genero_id],
  58.                                                                          [ new TLabel('Estado Cívil'),$estado_civil_id]
  59.                                                                      );
  60.             $row->layout = ['col-sm-1','col-sm-5','col-sm-2','col-sm-2','col-sm-2'];
  61.             $row $this->form->addFields( [ new TLabel('RG'),$rg ],
  62.                                                                          [ new TLabel(_t('State')),$uf_rg],
  63.                                                                          [ new TLabel('Data de Emissão'),$data_emissao_rg ],
  64.                                                                          [ new TLabel('CPF'),$cpf],
  65.                                                                          [ new TLabel('Título Eleitor'),$homephone ],
  66.                                                                          [ new TLabel('Naturalidade'),$naturalidade ]);
  67.             $row->layout = ['col-sm-2''col-sm-1''col-sm-2''col-sm-2''col-sm-2''col-sm-2'];
  68.             $label2 = new TLabel(_t('Address'), '#5A73DB'12'');
  69.             $label2->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
  70.             $this->form->addContent( [$label2] );
  71.             $row $this->form->addFields(
  72.                                                                          [ new TLabel('Cep'),$cep ] ,
  73.                                                                          [ new TLabel(_t('Street')),$street ],
  74.                                                                          [ new TLabel(_t('Number')),$number ],
  75.                                                                          [ new TLabel(_t('complement')),$complemento ]
  76.                                                                  );
  77.             $row->layout = ['col-sm-2''col-sm-5''col-sm-2','col-sm-3'];
  78.             $row $this->form->addFields( [ new TLabel(_t('Neighborhood')),$neighborhood ],
  79.                                                                          [ new TLabel(_t('County')),$municipio ],
  80.                                                                          [ new TLabel(_t('City')),$localidade ],
  81.                                                                          [ new TLabel(_t('State')),$state ]
  82.                                                                     );
  83.             $row->layout = ['col-sm-4','col-sm-4''col-sm-3','col-sm-1'];
  84.             $this->form->appendPage('Contatos');
  85.             
  86.             /*
  87.             //Cria campos dos telefones
  88.             $ddi = new TEntry('ddi[]');
  89.             $ddi->setMask('99');
  90.             $ddi->setSize('100%');
  91.             $ddi->style = 'text-align: right';
  92.             $ddd = new TEntry('ddd[]');
  93.             $ddd->setMask('999');
  94.             $ddd->setSize('100%');
  95.             $ddd->style = 'text-align: right';
  96.             // create detail fields
  97.             $tipo_telefone_id = new TDBUniqueSearch('tipo_telefone_id[]', '$db', 'TipoTelefone', 'id', 'nome');
  98.             $tipo_telefone_id->setMinLength(1);
  99.             $tipo_telefone_id->setSize('100%');
  100.             $tipo_telefone_id->setMask('{nome} ({id})');
  101.             $numero_telefone = new TEntry('numero_telefone[]');
  102.             $numero_telefone->setMask('9999-9999');
  103.             $numero_telefone->setSize('100%');
  104.             $numero_telefone->style = 'text-align: right';
  105.             //$numero_telefone->setChangeAction(new TAction(array($this, 'onChangeProduct')));
  106.             $this->form->addField($ddi);
  107.             $this->form->addField($ddd);
  108.             $this->form->addField($tipo_telefone_id);
  109.             $this->form->addField($numero_telefone);
  110.             // detail
  111.             $this->telefone_list = new TFieldList;
  112.             $this->telefone_list->generateAria();
  113.             $this->telefone_list->addField( '<b>DDI</b>',$ddi ,['width' => '50px']);
  114.             $this->telefone_list->addField( '<b>DDD</b>',$ddd , ['width' => '50px']);
  115.             $this->telefone_list->addField( '<b>Tipo</b>',$tipo_telefone_id, ['width' => '42%']);
  116.             $this->telefone_list->addField( '<b>Número</b>',$numero_telefone,['width' => '42%']);
  117.             $this->telefone_list-> width = '100%';
  118.             $this->telefone_list->enableSorting();
  119.             // add field list to the form
  120.             //$this->form->addContent( [$this->telefone_list] );
  121.             $row = $this->form->addFields([$this->telefone_list]);
  122.             $row->layout = ['col-sm-12' ];
  123.             */
  124.             
  125.             //cria campos dos contatos
  126.             $nome_contato = new TEntry('nome_contato[]');
  127.             $nome_contato->setSize('100%');
  128.             $nome_contato->style 'text-align: right';
  129.             // create detail fields
  130.             $tipo_contato_id = new TDBUniqueSearch('tipo_contato_id[]''$db''TipoContato''id''nome');
  131.             $tipo_contato_id->setMinLength(1);
  132.             $tipo_contato_id->setSize('100%');
  133.             $tipo_contato_id->setMask('{nome} ({id})');
  134.             //$parentesco_id = new TEntry('parentesco_id[]');
  135.             //$parentesco_id->setSize('100%');
  136.             //$parentesco_id->style = 'text-align: right';
  137.             $this->form->addField($nome_contato);
  138.             $this->form->addField($tipo_contato_id);
  139.             //$this->form->addField($parentesco_id);
  140.             // detail
  141.             $this->contato_list = new TFieldList;
  142.             $this->contato_list->addField'<b>DDI</b>',$nome_contato ,['width' => '50px']);
  143.             $this->contato_list->addField'<b>DDD</b>',$tipo_contato_id , ['width' => '50px']);
  144.             //$this->contato_list->addField( '<b>Grau Parentesco</b>',$parentesco_id, ['width' => '42%']);        
  145.             $this->contato_list-> width '100%';
  146.             $this->contato_list->enableSorting();
  147.             //$this->form->addContent( [ new TLabel('Contatos') ], [ $this->contacts ] );
  148.             $row $this->form->addFields([$this->contato_list]);
  149.             $row->layout = ['col-sm-12' ];            
  150.             $row $this->form->addFields( [ new TLabel('Pai'), $t1 = new TEntry('pai') ],
  151.                                                                          [ new TLabel('Mãe'), $t2 = new TEntry('mae') ] );
  152.             $row->layout = ['col-sm-4''col-sm-8' ];
  153.             $row $this->form->addFields( [ new TLabel('Test3'), $text = new TText('text') ] );
  154.             $row->layout = ['col-sm-12' ];
  155.             $cpf->addValidation('CPF', new TRequiredValidator);
  156.             $data_nascimento->addValidation('Data de Nascimento', new TRequiredValidator);
  157.             $genero_id->addValidation('Genero', new TRequiredValidator);
  158.             $estado_civil_id->addValidation('Estado Cívil', new TRequiredValidator);
  159.             $cep->addValidation('CEP', new TRequiredValidator);
  160.             $this->form->addAction(_t('Send'), new TAction(array($this'onSend')), 'far:check-circle green');
  161.             // wrap the page content using vertical box
  162.             $vbox = new TVBox;
  163.             $vbox->style 'width: 100%';
  164.             $vbox->add(new TXMLBreadCrumb('menu.xml''DataGridClienteFisico'));
  165.             $vbox->add($this->form);
  166.             parent::add($vbox);
  167.         }
  168.     /**
  169.      * Post data
  170.     */
  171.     public function onSend($param)
  172.     {
  173.         try
  174.         {
  175.             // open a transaction with database 'samples'
  176.             TTransaction::open($this->db);
  177.             $this->form->validate(); // run form validation
  178.             $data $this->form->getData(); // get form data as array
  179.             $pessoa = new Pessoa;  // create an empty object
  180.             $pessoa->fromArray( (array) $data); // load the object with data
  181.             $pessoa->tipo_pessoa_id 1;
  182.             $pessoa->situacao_id 1;
  183.             $pessoa->store(); // save the object
  184.             if($pessoa)
  185.             {
  186.                 if( !empty($param['tipo_contato_id']) AND is_array($param['tipo_contato_id']) )
  187.                 {
  188.                     foreach( $param['tipo_contato_id'] as $row => $tipo_contato_id)
  189.                     {
  190.                         if ($tipo_contato_id)
  191.                         {
  192.                             $contato = new Contato;
  193.                             $contato->pessoa_id             $pessoa->id;
  194.                             $contato->system_unit_id  TSession::getValue('userunitids');
  195.                             $contato->tipo_contato_id $param['tipo_contato_id'][$row];
  196.                             $contato->nome                         $param['nome_contato'][$row];    
  197.                             $contato->atualizacao         date('Y-m-d H:m:s:s');
  198.                             
  199.                             // add the contact to the customer
  200.                             $pessoa->addContact($contato);
  201.                         }
  202.                     }
  203.                 }                
  204.                 
  205.                 $cpf preg_replace("/[^0-9]/"""$data->cpf);
  206.                 //echo $cpf;
  207.                 $fisica = new Fisica;
  208.                 $fisica->pessoa_id                 $pessoa->id;
  209.                 $fisica->nome                         $data->nome;
  210.                 $fisica->data_nascimento    $data->data_nascimento;
  211.                 $fisica->genero_id                 $data->genero_id;
  212.                 $fisica->estado_civil_id    $data->estado_civil_id;
  213.                 $fisica->cpf                             preg_replace("/[^0-9]/"""$data->cpf);
  214.                 $fisica->rg                            preg_replace("/[^0-9]/"""$data->rg);
  215.                 $fisica->uf_rg                    $data->uf_rg;
  216.                 $fisica->data_emissao_rg    $data->data_emissao_rg;
  217.                 $fisica->orgao_expedidor_rg $data->uf_rg;
  218.                 $fisica->titulo_eleitor     $data->homephone;
  219.                 $fisica->uf_titulo_eleitor  $data->uf_rg;
  220.                 $fisica->naturalidade       $data->naturalidade;
  221.                 $fisica->pai                     $data->pai;
  222.                 $fisica->mae             $data->mae;
  223.                 $fisica->store();
  224.             }
  225.             // fill the form with the active record data
  226.             $data->id $pessoa->id;
  227.             $this->form->setData($data);
  228.             TTransaction::close();  // close the transaction
  229.             // shows the success message
  230.             new TMessage('info''Record saved');
  231.         }
  232.          catch (Exception $e// in case of exception
  233.         {
  234.             new TMessage('error'$e->getMessage()); // shows the exception error message
  235.             $this->form->setData$this->form->getData() ); // keep form data
  236.             TTransaction::rollback(); // undo all pending operations
  237.         }
  238.     }
  239.     /**
  240.      * Executed whenever the user clicks at the edit button da datagrid
  241.     */
  242.     public function onEdit($param)
  243.     {
  244.         try
  245.         {
  246.             if (isset($param['pessoa_id']))
  247.             {
  248.                 TTransaction::open($this->db);
  249.                 $key $param['pessoa_id'];
  250.                 $object Fisica::find($key);
  251.                 $object->id $object->pessoa_id;
  252.                 $object->id $object->pessoa_id;
  253.                 $this->form->setData($object);   // fill the form with the active record data    
  254.                 
  255.                 // load the contacts (composition)
  256.                 $contacts $object->pessoa->pessoa_vinculo->getcontatos();
  257.                                 print_r($contacts);
  258.                 if ($contacts)
  259.                 {
  260.                     $this->contacts->addHeader();
  261.                     foreach ($contacts as $contact)
  262.                     {
  263.                         $contact_detail = new stdClass;
  264.                         $contact_detail->tipo_contato_id  $contact->tipo_contato_id;
  265.                         $contact_detail->nome_contato            $contact->nome;
  266.                         
  267.                         $this->contacts->addDetail($contact_detail);
  268.                     }
  269.                     $this->contacts->addCloneAction();
  270.                 }
  271.                 else
  272.                 {
  273.                         $this->onClear($param);
  274.                 }
  275.             }    
  276.             TTransaction::close(); // close transaction
  277.         }
  278.         catch (Exception $e// in case of exception
  279.         {
  280.             new TMessage('error'$e->getMessage());
  281.             TTransaction::rollback();
  282.         }
  283.     }
  284.     /**
  285.   * Clear form
  286.   */
  287.     public function onClear($param)
  288.     {
  289.         $this->form->clear();
  290.         
  291.         $this->contacts->addHeader();
  292.         $this->contacts->addDetail( new stdClass );
  293.         $this->contacts->addCloneAction();
  294.     }
  295. }

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


FC

Parece que faltou a linha de inclusão no form:

  1. <?php
  2. $this->form->addContent( [$this->fieldlist] );
  3. ?>
RB

Felipe Cortez: Resolvido.

Muito obrigado pela dica, funcionou perfeito.

Nada como um olhar externo.

Valeu.