Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Mensagem de erro fatal - carga de fiellist Bom dia...pessoal Se puderem me ajudar, estou tentando a carga de um forma externo com parametros, tudo funciona bem , o retorno de objetos do banco, mas a carga do fieldlist para neste erro na linha 157, conforme imagem anexo, não consigo resolver, conto com a ajuda de vocês desde agradeço muito. [] obrigado ...
AT
Mensagem de erro fatal - carga de fiellist  
Bom dia...pessoal

Se puderem me ajudar, estou tentando a carga de um forma externo com parametros, tudo funciona bem , o retorno de objetos do banco, mas a carga do fieldlist para neste erro na linha 157, conforme imagem anexo, não consigo resolver, conto com a ajuda de vocês desde agradeço muito.

[] obrigado


Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (9)


AT

  1. <?php
  2. /*
  3. * EnderecoForm 
  4. * @version    1.0
  5. * @package    setcis
  6. * @author     Antonio Augusto Tavares
  7. * @copyright  Copyright (c) 2018 Setsoft - Consultoria e Informática Ltda
  8. */
  9. class EnderecoForm extends TPage
  10. {
  11.     protected $form// form
  12.     protected $formfdl;
  13.     protected $detail_row;
  14.     protected $fieldlist;
  15.     static    $id_ent;
  16.     static    $actEnd;
  17.     static    $arrLogra;
  18.     
  19.     // Creates the page and the registration form
  20.     function __construct($param)
  21.     {
  22.         parent::__construct();
  23.         if ((int) $param != 0)
  24.         {
  25.             $this->onLoad((int) $param);
  26.         }    
  27.                 
  28.         $this->form = new TForm('form_endereco');
  29.         
  30.         // cria fieldlist
  31.         
  32.         $this->fieldlist = new TFieldList;
  33.         $this->fieldlist->width '100%';
  34.         $this->fieldlist->name  'fdlEndereco';
  35.         $this->form->add($this->fieldlist);
  36.         // define campos
  37.         
  38.         $id             = new TEntry('list_id[]');
  39.         $enderecos_id   = new TDBCombo('list_enderecos_id[]''setcis''Enderecos''id''descricao''descricao asc');
  40.         $cep            = new TEntry('list_cep[]');
  41.         $logradouros_id = new TDBCombo('list_logradouros_id[]''setcis''Logradouros''id''descricao''descricao asc');
  42.         $endereco       = new TEntry('list_endereco[]');
  43.         $numero         = new TEntry('list_numero[]');
  44.         $complemento    = new TEntry('list_complemento[]');
  45.         $bairro         = new TEntry('list_bairro[]');
  46.         $cidade_id      = new TDBCombo('list_cidade_id[]''setcis''Municipio''id''nome''nome asc');
  47.         $estado_id      = new TDBCombo('list_estado_id[]''setcis''Estado''id''sigla''sigla asc');
  48.         $actEnd = new TCombo('list_action');
  49.         $entidade_id = new THidden('list_entidade_id[]');
  50.         
  51.         // Tamanhos
  52.         
  53.         $id->setSize('100%'); 
  54.         $enderecos_id->setSize('100%');
  55.         $cep->setSize('100%');
  56.         $logradouros_id->setSize('100%');
  57.         $endereco->setSize('100%');
  58.         $numero->setSize('100%');
  59.         $complemento->setSize('100%');
  60.         $bairro->setSize('100%');
  61.         $cidade_id->setSize('100%');
  62.         $estado_id->setSize('100%');
  63.         $actEnd->setSize('100%');   
  64.         
  65.         // styles
  66.         
  67.         $cep->style="background-color: #ffff99; text-align: left";        
  68.         $numero->style="text-align: center"
  69.         $complemento->style 'text-transform: uppercase';
  70.         
  71.         // define ações
  72.         
  73.         $items = ['1'=>'SALVAR''2'=>'EXCLUIR''3'=>'SUCESSO''4'=>'MAPA'];  
  74.         $actEnd->addItems($items);
  75.         $actEnd->setValue('1');        
  76.         
  77.         $id->setEditable(FALSE); 
  78.         //$( "#id" ).prop( "disabled", true );
  79.         $cep->setExitAction(new TAction(array($this'onCep')));
  80.         $change_action = new TAction(array($this'onDefine'));
  81.         $actEnd->setChangeAction($change_action);
  82.         
  83.         $change_cidade_id = new TAction(array($this'onDetalhes'));
  84.         $cidade_id->setChangeAction($change_cidade_id);        
  85.  
  86.         // monta fieldlist    
  87.  
  88.         $this->fieldlist->addField'ID'$id, ['width' => '4%']);
  89.         $this->fieldlist->addField'Tipo'$enderecos_id, ['width' => '6%']);
  90.         $this->fieldlist->addField'Cep'$cep, ['width' => '6%']);
  91.         $this->fieldlist->addField'Logradouro'$logradouros_id, ['width' => '6%']);
  92.         $this->fieldlist->addField'Endereco'$endereco, ['width' => '18%']);
  93.         $this->fieldlist->addField'Número'$numero, ['width' => '5%']);
  94.         $this->fieldlist->addField'Complemento'$complemento, ['width' => '10%']);
  95.         $this->fieldlist->addField'Bairro'$bairro, ['width' => '10%']);
  96.         $this->fieldlist->addField'Cidade'$cidade_id, ['width' => '10%']);
  97.         $this->fieldlist->addField'Estado'$estado_id, ['width' => '4%']);
  98.         $this->fieldlist->addField'Salvar/Excluir'$actEnd, ['width' => '2%']);
  99.         $this->fieldlist->addField''$entidade_id);
  100.         $this->fieldlist->width '100%';
  101.          
  102.         // adiciona campos no form
  103.         
  104.         $this->form->addField($id);
  105.         $this->form->addField($enderecos_id);
  106.         $this->form->addField($cep);
  107.         $this->form->addField($logradouros_id);
  108.         $this->form->addField($endereco);
  109.         $this->form->addField($numero);
  110.         $this->form->addField($complemento);
  111.         $this->form->addField($bairro);
  112.         $this->form->addField($cidade_id);
  113.         $this->form->addField($estado_id);
  114.         $this->form->addField($actEnd);
  115.         $this->form->addField($entidade_id);
  116.         
  117.         // create the page container
  118.         
  119.         $container = new TVBox;
  120.         $container->style 'width: 100%';
  121.         $container->add($this->form);
  122.         
  123.         parent::add($container);
  124.     }
  125.     
  126.     // metodo show
  127.        
  128.     public function show()
  129.     {
  130.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onLoad') )
  131.         {
  132.             $this->onLoad(0);
  133.         }
  134.         parent::show();
  135.     }    
  136.    
  137.     // metodo carga do fieldlist
  138.     
  139.     function onLoad($param)
  140.     {
  141.         try
  142.         {
  143.             TTransaction::open('setcis');
  144.             
  145.             $id_ent $param// TSession::getValue('id_ent'); 
  146.             
  147.             //var_dump($id_ent);
  148.             //var_dump(TSession::getValue('id_ent'));
  149.             
  150.             $objEndereco EntidadeEndereco::where('entidade_id''='$id_ent)->load();
  151.             
  152.             $this->fieldlist->addHeader();
  153.             
  154.             if ($objEndereco)
  155.             {
  156.                 foreach ($objEndereco as $end)
  157.                 {
  158.                     $objForm                      = new stdClass;
  159.                     $objForm->list_id             $end->id;
  160.                     $objForm->list_enderecos_id   $end->enderecos_id;
  161.                     $objForm->list_cep            $end->cep;
  162.                     $objForm->list_logradouros_id $end->logradouros_id;
  163.                     $objForm->list_endereco       $end->endereco;     
  164.                     $objForm->list_numero         $end->numero;
  165.                     $objForm->list_complemento    $end->complemento;
  166.                     $objForm->list_bairro         $end->bairro;
  167.                     $objForm->list_cidade_id      $end->cidade_id;     
  168.                     $objForm->list_estado_id      $end->estado_id
  169.                     
  170.                     $row $this->fieldlist->addDetail($objForm);
  171.                     $row->del($row->get(count($row->getChildren())-1));
  172.                 }
  173.                 $row $this->fieldlist->addDetail( new stdClass );
  174.                 $row->del($row->get(count($row->getChildren())-1)); 
  175.             }
  176.             else
  177.             {
  178.                 $row $this->fieldlist->addDetail( new stdClass );
  179.                 $row->del($row->get(count($row->getChildren())-1)); 
  180.             }
  181.             TTransaction::close();
  182.             
  183.             TScript::create(' $( "#list_enderecos_id" ).focus(); '); 
  184.             
  185.         }
  186.         catch (Exception $e
  187.         {
  188.             new TMessage('error'$e->getMessage());
  189.               
  190.             TTransaction::rollback();
  191.         }
  192.     }        
  193.     
  194.     // method onDefine
  195.     
  196.     public static function onDefine($param)
  197.     {
  198.         $opcao $param['key'];
  199.         
  200.         if($opcao == '1')
  201.         {
  202.             AdiantiCoreApplication::loadPage(__CLASS__'onSave'$param);
  203.         }
  204.         elseif ($opcao == '2')
  205.         {        
  206.             $action = new TAction([__CLASS__'onDelete']);
  207.             $action->setParameters($param); 
  208.             new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
  209.         }
  210.         elseif ($opcao == '4')
  211.         {
  212.             AdiantiCoreApplication::loadPage(__CLASS__'onMapa'$param); 
  213.         }
  214.     }
  215.     
  216.     // method onSave
  217.    
  218.     function onSave($param)
  219.     {
  220.         try
  221.         {
  222.             // captura o indice e id
  223.             parse_str($param['_field_data'], $field_data);
  224.             $indice $field_data['row'];      
  225.             $id_end = (int) $param['list_id'][$indice];
  226.             
  227.             $input_id $param['_field_id'];
  228.             $input_pieces explode('_'$input_id);
  229.             $unique_id end($input_pieces);  
  230.             
  231.             TTransaction::open('setcis'); 
  232.             
  233.             $this->onValidate($param);
  234.             
  235.             $objEndereco = new StdClass;
  236.             $objEndereco->enderecos_id   $param['list_enderecos_id'][$indice];
  237.             $objEndereco->cep            $param['list_cep'][$indice];
  238.             $objEndereco->logradouros_id $param['list_logradouros_id'][$indice];
  239.             $objEndereco->endereco       $param['list_endereco'][$indice];
  240.             $objEndereco->numero         $param['list_numero'][$indice];
  241.             $objEndereco->complemento    $param['list_complemento'][$indice];
  242.             $objEndereco->bairro         $param['list_bairro'][$indice];
  243.             $objEndereco->cidade_id      $param['list_cidade_id'][$indice];
  244.             $objEndereco->estado_id      $param['list_estado_id'][$indice];
  245.  
  246.             $tabEndereco = new EntidadeEndereco($id_end);
  247.             $tabEndereco->entidade_id TSession::getValue('id_ent');
  248.             $tabEndereco->fromArray( (array) $objEndereco);
  249.             $tabEndereco->store();
  250.             
  251.             $objForm = new StdClass;
  252.             $objForm->{'list_id_'.$unique_id}     = $tabEndereco->id;
  253.             $objForm->{'list_action_'.$unique_id} = '3';
  254.             
  255.             TForm::sendData('form_endereco'$objForm);
  256.             if (end($param['list_cep']))
  257.             {
  258.                 TFieldList::addRows('fdlEndereco',1);
  259.             }
  260.             
  261.             $hifem  strpos($param['list_cep'][$indice], '-');
  262.             $cepNum substr($objEndereco->cep,0,$hifem) . substr($objEndereco->cep,$hifem 1,3);
  263.             $tabCep Cep::where('cep''='$cepNum)->load();
  264.             
  265.             if (!$tabCep)
  266.             {
  267.                 $objCep             = new stdClass
  268.                 $objCep->cep        $cepNum;
  269.                 $objCep->logradouro TSession::getValue('arrLogra')[$param['list_logradouros_id'][$indice]];
  270.                 $objCep->endereco   $objEndereco->endereco;
  271.                 $objCep->bairro     $objEndereco->bairro;
  272.                 $objCep->cidade     TSession::getValue('arrCidade')[$param['list_cidade_id'][$indice]]; 
  273.                 $objCep->estado     TSession::getValue('arrEstado')[$param['list_estado_id'][$indice]];  
  274.                 
  275.                 $tabCep = new Cep;
  276.                 $tabCep->fromArray( (array) $objCep);
  277.                 $tabCep->store();
  278.             }
  279.             
  280.             TTransaction::close(); 
  281.         }
  282.         catch (Exception $e// in case of exception
  283.         {
  284.             new TMessage('error'$e->getMessage());
  285.             TTransaction::rollback();
  286.         }
  287.     }    
  288.     
  289.     // method validador
  290.    
  291.     public function onValidate($param)
  292.     {
  293.         parse_str($param['_field_data'], $field_data);
  294.         $indice $field_data['row']; 
  295.    
  296.         if ((!$param['list_enderecos_id'][$indice])) throw new Exception('O campo <b>Tipo</b> é obrigatório');
  297.         if ((!$param['list_cep'][$indice])) throw new Exception('O campo <b>Cep</b> é obrigatório');
  298.         if ((!$param['list_logradouros_id'][$indice])) throw new Exception('O campo <b>Logradouro</b> é obrigatório');
  299.         if ((!$param['list_enderecos_id'][$indice])) throw new Exception('O campo <b>Endereco</b> é obrigatório');
  300.         if ((!$param['list_numero'][$indice])) throw new Exception('O campo <b>Numero</b> é obrigatório');
  301.         if ((!$param['list_bairro'][$indice])) throw new Exception('O campo <b>Bairro</b> é obrigatório');
  302.         if ((!$param['list_cidade_id'][$indice])) throw new Exception('O campo <b>Cidade</b> é obrigatório');
  303.         if ((!$param['list_estado_id'][$indice])) throw new Exception('O campo <b>Estado</b> é obrigatório');
  304.     }            
  305.   
  306.     // method delete endereço
  307.     
  308.     function onDelete($param)
  309.     {
  310.         try
  311.         {
  312.             // captura o indice e id
  313.   
  314.             parse_str($param['_field_data'], $field_data);
  315.             $indice $field_data['row'];      
  316.             $id_end = (int) $param['list_id'][$indice];        
  317.             
  318.             TTransaction::open('setcis'); 
  319.             
  320.             $tabEndereco = new EntidadeEndereco($id_end);
  321.             $tabEndereco->delete();
  322.              
  323.             TTransaction::close();
  324.             
  325.             AdiantiCoreApplication::loadPage(__CLASS__'onLoad'); 
  326.         }
  327.         catch (Exception $e
  328.         {
  329.             new TMessage('error'$e->getMessage());
  330.                 
  331.             TTransaction::rollback();
  332.         }        
  333.     }    
  334.     
  335.     // method busca cep
  336.     
  337.     public static function onCep($param
  338.     {
  339.         try 
  340.         {
  341.             //Monta parametros
  342.             parse_str($param['_field_data'], $field_data);
  343.             $indice $field_data['row'];      
  344.             $id_end = (int) $param['list_id'][$indice];
  345.         
  346.             $input_id $param['_field_id'];
  347.             $input_pieces explode('_'$input_id);
  348.             $unique_id end($input_pieces);    
  349.             
  350.             $cepKey trim($param['key']);
  351.             $hifem strpos($cepKey'-');
  352.             $cepNum = ($hifem) ? substr($cepKey,0,$hifem) . substr($cepKey,$hifem 1,3) : $cepKey;
  353.             $cepTam strlen($cepNum);
  354.             
  355.             $from 'àáãâéêíóõôúüç';
  356.             $to   'ÀÁÃÂÉÊÍÓÕÔÚÜÇ';
  357.             $key  "AIzaSyCN3Csd1bMMcHBCjQZ-w6Jv1bGHP9NjxWY";
  358.             $correio 'http://www.buscacep.correios.com.br/sistemas/buscacep/resultadoBuscaCepEndereco.cfm';
  359.   
  360.             if ($cepTam == 0)
  361.             {
  362.                 TScript::create("var win = window.open('{$correio}', '_blank'); win.focus();");
  363.             }
  364.             elseif ($cepTam != 8)
  365.             {
  366.                 new TMessage('info''Cep inválido...(tem que ter 8 digitos)');
  367.                 TScript::create('setTimeout(function() { $("input[name=\'cep\']").focus() }, 500);');        
  368.             }
  369.             else
  370.             {
  371.                 TTransaction::open('setcis');
  372.                 
  373.                 $tabCep Cep::where('cep''='$cepNum)->load();
  374.                 
  375.                 if ($tabCep)
  376.                 {
  377.                     foreach ($tabCep as $tab
  378.                     {
  379.                         $objCep = new StdClass
  380.                         $objCep->{'list_enderecos_id_'.$unique_id} = $param['list_enderecos_id'][$indice];
  381.                         $objCep->{'list_cep_'.$unique_id} = substr($tab->cep,0,5) . '-'substr($tab->cep,5,3);
  382.                         $objCep->{'list_logradouros_id_'.$unique_id} = array_search($tab->logradouroLogradouros::getIndexedArray('id''descricao')); 
  383.                         $objCep->{'list_endereco_'.$unique_id} = $tab->endereco;
  384.                         $objCep->{'list_bairro_'.$unique_id} = $tab->bairro;
  385.                         $objCep->{'list_cidade_id_'.$unique_id} = array_search($tab->cidadeMunicipio::getIndexedArray('id''nome'));
  386.                         $objCep->{'list_estado_id_'.$unique_id} = array_search($tab->estadoEstado::getIndexedArray('id''sigla'));
  387.                                  
  388.                         TForm::sendData('form_endereco'$objCep); 
  389.                         
  390.                         //TScript::create('setTimeout(function() { $("input[name='list_numero']").focus() }, 100);');
  391.                         
  392.                         //TScript::create('setTimeout(function() { $("input[name=\'list_numero\']").focus() }, 200);'); 
  393.                     }    
  394.                 }
  395.                 else
  396.                 {      
  397.                     TScript::create("var win = window.open('{$correio}', '_blank'); win.focus();");
  398.                     //new TMessage('info', 'Cep: '.$cepNum.' não existe na base de dados!');
  399.                     //$objCep->{'ibge_'.$unique_id} = $retorno->ibge;                
  400.                 }                
  401.                 
  402.                 TTransaction::close(); 
  403.             }
  404.         }
  405.         catch (Exception $e
  406.         {
  407.             new TMessage('error'$e->getMessage());    
  408.         }
  409.     }
  410.     
  411.     // pesquisa coordenas lat e lng
  412.     
  413.     public static function onMapa($param)
  414.     {
  415.         parse_str($param['_field_data'], $field_data);
  416.         $indice $field_data['row'];  
  417.         
  418.         $input_id $param['_field_id'];
  419.         $input_pieces explode('_'$input_id);
  420.         $unique_id end($input_pieces);    
  421.          
  422.         $from 'àáãâéêíóõôúüç';
  423.         $to   'ÀÁÃÂÉÊÍÓÕÔÚÜÇ';
  424.         TTransaction::open('setcis');
  425.             
  426.         $desLogra  Logradouros::getIndexedArray('id''descricao')[$param['list_logradouros_id'][$indice]];
  427.         $desCidade Municipio::getIndexedArray('id''nome')[$param['list_cidade_id'][$indice]];   
  428.         $desEstado Estado::getIndexedArray('id''sigla')[$param['list_estado_id'][$indice]];
  429.             
  430.         TTransaction::close(); 
  431.         $urlEnd $desLogra.' '.$param['list_endereco'][$indice].' '.$param['list_numero'][$indice].' '.$param['list_bairro'][$indice].' '.$desCidade.' '.$desEstado;
  432.         $address str_replace(' ','+',strtr(strtolower($urlEnd), $to$from)); 
  433.         $geocode = new TGeoCode($address);
  434.         $geocode->request();
  435.         $status $geocode->getStatus();
  436.         if ($status == 'OK'
  437.         {
  438.             $link 'http://maps.google.com/?q='.$geocode->getLat().','.$geocode->getLng(); 
  439.             TScript::create("var win = window.open('{$link}', '_blank'); win.focus();");                 
  440.         }  
  441.         else
  442.         {
  443.             new TMessage('info''Não foi possível abrir o mapa, motivo: '.$status);
  444.         }            
  445.         
  446.     }        
  447.     
  448.     //edite cidade
  449.     
  450.     public static function onDetalhes($param)
  451.     {
  452.        //$MunicipioForm = 'app\control\tabelas\MunicipioForm';
  453.        //$link = new TElement('a');
  454.        //$link->target = 'newwindow';
  455.        //$link->class = 'MunicipioForm';
  456.        //$link->href = 'index.php?class=MunicipioForm';
  457.        //$link->add('Cidades');
  458.               
  459.        AdiantiCoreApplication::loadPage('MunicipioForm');   
  460.        
  461.        //$link = 'app/control/tabelas/MunicipioForm';         
  462.               
  463.        //if($param) TApplication::loadPage('C:\wamp64\www\setcis\app\control\tabelas\MunicipioForm'); 
  464.        //TScript::create("var win = window.open('{$link}', '_blank'); win.focus();");
  465.     }        
  466. }
  467. ?>

NR

Na linha 28 você está chamando a função onLoad e dentro dela tentando acessar a variável $this->fieldlist que só é inicializada na linha 35.

Inicie a variável antes ou chame a função depois da inicialização.
AT

Boa tarde Nataniel...

Obrigado pelo retorno, corrigi o erro do fieldlist, chamei a função após a inicialização o erro faltal resolveu, mas o fieldlist não carrega, ainda com os objetos dentro fo foreach carregarem normalmente, na linha 175 não carrega o objForm, no outro post vc se referiu a atribuição $id_ent = $param; como possível erro, mas os objetos retornam do banco, so não carregam o fieldlist, por favor me ajude a resolver, se conseguir neste caso meu projeto todo ficará pronto entendeu?

[] obrligado
NR

Como você está chegando nessa tela? Através de loadPage, diretamente do menu, por uma datagrid? E qual função desta classe está sendo chamada inicialmente?
AT

Boa noite Nataniel...

Obrigado por retornar, vou postar o form mestre, onde faço a carga dos forms detalhe atribuindo cada um a página do notebook, são muitos detalhes e ficou confuso e trabalhoso fazer tudo em único form, o resultado é excelente, tb vou enviar uma tela onde dados pessoais com foto funcionando normalmente, o problema é que o form enderecos em questão não faz a carga do fieldlist, faço um var_dump e os objetos retornam perfeitamente, todos os forms detalhes são carregados e a função onLoad e onEdit são ativadas diretamente, avalia com sua experiência uma vez que ja fiz projeção no desenvolvimento do projeto e dependo desta solução desde ja te agradeço muito!!!

[] obrigado
AT

  1. <?php
  2.     
  3. /**
  4. * EntidadeForm
  5. *
  6. * @version    1.0
  7. * @package    setcia
  8. * @author     Antonio Augusto Tavares
  9. * @copyright  Copyright (c) 2018 Setsoft - Consultoria e Informática Ltda
  10. */
  11. class EntidadeForm extends TPage
  12. {
  13.     private   $form
  14.     private   $entidade;    
  15.     private   $notebook;
  16.     protected $foto;
  17.     public    $imagem;
  18.     public    $table;
  19.     protected $divFoto;
  20.     public    $imgFoto;
  21.     
  22.     //use PessoaisForm;
  23.     
  24.     function __construct()
  25.     {
  26.         parent::__construct();
  27.         parent::include_js('app/lib/include/application.js');   
  28.         
  29.         TSession::setValue('id_ent'0);
  30.         
  31.         // cria o form
  32.  
  33.         $this->form = new BootstrapFormBuilder('form_entidade');
  34.         $this->form->style 'width: 100%';
  35.         $this->form->setFieldSizes('100%');
  36.         
  37.         // declara campos de pesquisa
  38.             
  39.         $id_find = new TDBCombo('id_find''setcis''Entidade''id''id','id asc');
  40.         $id_find->setSize('100%');
  41.     
  42.         $nome_find = new TDBUniqueSearch('nome_find''setcis''entidade''id''nome''nome asc');
  43.         $nome_find->setMinLength(1);
  44.         $nome_find->setSize('100%');
  45.         $nome_find->setMask('{nome}');
  46.            
  47.         $programatico_find = new TDBUniqueSearch('programatico_find''setcis''entidade''id''programatico');
  48.         $programatico_find->setMinLength(1);
  49.         $programatico_find->setSize('100%');
  50.         $programatico_find->setMask('{programatico} ');
  51.         
  52.         // defina ações de pesquisa
  53.         
  54.         $id_change = new TAction(array($this'onEditeEntidade'));
  55.         $id_find->setChangeAction($id_change);
  56.         
  57.         $nome_change = new TAction(array($this'onEditeEntidade'));
  58.         $nome_find->setChangeAction($nome_change);
  59.             
  60.         $programatico_change = new TAction(array($this'onEditeEntidade'));
  61.         $programatico_find->setChangeAction($programatico_change);
  62.             
  63.         $gru_ini parse_ini_file('app\config\entidades.ini'true);
  64.         
  65.         $opcaoMenu $gru_ini['grupo']['Associados'];
  66.             
  67.         $criteria = new TCriteria();
  68.         $criteria->add(new TFilter('grupo','=',$opcaoMenu));
  69.         
  70.         $id             = new TEntry('id');
  71.         $nome           = new TEntry('nome');
  72.         $pessoas_id     = new TDBCombo('pessoas_id''setcis''pessoas''id''descricao');
  73.         $entidades_id   = new TDBCombo('entidades_id''setcis''entidades''id''descricao''descricao asc',$criteria);
  74.         $programatico   = new TEntry('programatico');
  75.         
  76.         $entidades_id_change = new TAction(array($this'onSetMask'));
  77.         $entidades_id->setChangeAction($entidades_id_change);        
  78.         
  79.         // validações
  80.         
  81.         $nome->addValidation('Nome', new TRequiredValidator); 
  82.         $pessoas_id->addValidation('Pessoa', new TRequiredValidator); 
  83.         $entidades_id->addValidation('Categoria', new TRequiredValidator); 
  84.         $programatico->addValidation('Código/Alternatibo', new TRequiredValidator); 
  85.             
  86.         $id->setEditable(FALSE);
  87.          
  88.         // posiciona elementos no form
  89.         $row $this->form->addFields([ $id_find ],
  90.                                       [ $nome_find ],
  91.                                       [ $programatico_find ],
  92.                                       [ TButton::create('clear', array($this'onClear'), 'Novo''fa:eraser green')]);
  93.         $row->layout = ['col-sm-1''col-sm-8''col-sm-2''col-sm-1'];       
  94.             
  95.         $row $this->form->addFields([ new TLabel('<b>Codigo</b>') ], //'<b>Id</b>'
  96.                                       [ new TLabel('<b>Nome</b>') ],
  97.                                       [ new TLabel('<b>Pessoa</b>') ],
  98.                                       [ new TLabel('<b>Categoria</b>') ],
  99.                                       [ new TLabel('<b>Código/Alternativo</b>') ],
  100.                                       [TButton::create('delete', array($this'onDelete'), 'Excluir''fa:eraser red')]);
  101.         $row->layout = ['col-sm-1''col-sm-4''col-sm-2''col-sm-2''col-sm-2''col-sm-1' ];     
  102.                         
  103.         $row $this->form->addFields([ $id ],
  104.                                       [ $nome ],
  105.                                       [ $pessoas_id ],
  106.                                       [ $entidades_id ],
  107.                                       [ $programatico ],
  108.                                       [ TButton::create('save',  array($this'onSave'), 'Salvar''fa:save blue')]);
  109.         $row->layout = ['col-sm-1''col-sm-4''col-sm-2''col-sm-2''col-sm-2''col-sm-1' ];
  110.         
  111.         // prepara notebook de detalhes
  112.             
  113.         $foto        = new TFrame;     
  114.         $foto->class 'tframe tframe-custom';
  115.         $foto->style 'background:whiteSmoke';   
  116.         
  117.         $pessoal        = new TFrame;
  118.         $pessoal->class 'tframe tframe-custom';
  119.         $pessoal->style 'background:whiteSmoke;margin:0px;width:100%;height:350px';
  120.  
  121.         $endereco        = new TFrame;
  122.         $endereco->class 'tframe tframe-custom';
  123.         $endereco->style 'background:whiteSmoke';
  124.         
  125.         $inscricao        = new TFrame;
  126.         $inscricao->class 'tframe tframe-custom';
  127.         $inscricao->style 'background:whiteSmoke';
  128.         
  129.         $eletronico        = new TFrame;
  130.         $eletronico->class 'tframe tframe-custom';
  131.         $eletronico->style 'background:whiteSmoke';   
  132.              
  133.         $contrato        = new TFrame;
  134.         $contrato->class 'tframe tframe-custom';
  135.         $contrato->style 'background:whiteSmoke';        
  136.         
  137.         $carteira    = new TFrame;
  138.         $carteira->class 'tframe tframe-custom';
  139.         $carteira->style 'background:whiteSmoke';   
  140.         
  141.         $vinculado   = new TFrame;
  142.         $vinculado->class 'tframe tframe-custom';
  143.         $vinculado->style 'background:whiteSmoke';           
  144.         
  145.         $conta       = new TFrame;
  146.         $conta->class 'tframe tframe-custom';
  147.         $conta->style 'background:whiteSmoke';              
  148.         
  149.         $boleto      = new TFrame;
  150.         $boleto->class 'tframe tframe-custom';
  151.         $boleto->style 'background:whiteSmoke';      
  152.                 
  153.         $mandato     = new TFrame;
  154.         $mandato->class 'tframe tframe-custom';
  155.         $mandato->style 'background:whiteSmoke';              
  156.         
  157.         $atendimento = new TFrame;
  158.         $atendimento->class 'tframe tframe-custom';
  159.         $atendimento->style 'background:whiteSmoke';           
  160.         
  161.         $ocorrencias = new TFrame;
  162.         $ocorrencias->class 'tframe tframe-custom';
  163.         $ocorrencias->style 'background:whiteSmoke';               
  164.         // cria notebook detalhes 
  165.         $notebook = new BootstrapNotebookWrapper( new TNotebook() );
  166.         //$notebook->setTabAction( new TAction(array($this, 'onTabClick')));
  167.         $notebook->style 'background:white';  
  168.         
  169.         $ent_ini parse_ini_file('app\config\entidade_abas.ini');
  170.         
  171.         //var_dump($ent_ini['Inscricoes']);
  172.         
  173.         if (($ent_ini['Imagem']) and ($opcaoMenu == '4'))
  174.         {
  175.             $notebook->appendPage('Imagem',      $foto); 
  176.             //$form_imagem = new ImagemForm(0);
  177.             //$Imagem->add($form_imagem);
  178.         }
  179.         if (($ent_ini['Pessoais']) and ($opcaoMenu == '3'))
  180.         {
  181.             $notebook->appendPage('Pessoais',   $pessoal); 
  182.             $form_pessoais = new PessoaisForm(0);
  183.             $pessoal->add($form_pessoais);                
  184.         }
  185.         if (($ent_ini['Enderecos']) and (($opcaoMenu == '3') or ($opcaoMenu == '4')))
  186.         {
  187.             $notebook->appendPage('Endereços',   $endereco);
  188.             $form_endereco = new EnderecoForm(0);
  189.             $endereco->add($form_endereco);
  190.         }
  191.         if (($ent_ini['Inscricoes']) and (($opcaoMenu == '3') or ($opcaoMenu == '4')))
  192.         {
  193.             $notebook->appendPage('Inscrições',  $inscricao);
  194.             $form_Inscricao = new InscricaoForm(0);
  195.             $inscricao->add($form_Inscricao);  
  196.         }
  197.         if (($ent_ini['Eletronicos']) and (($opcaoMenu == '3') or ($opcaoMenu == '4')))
  198.         {
  199.             $notebook->appendPage('Eletrônicos'$eletronico); 
  200.             $form_Eletronico = new EletronicoForm(0);
  201.             $eletronico->add($form_Eletronico);                                
  202.         }    
  203.         if (($ent_ini['Contratos']) and (($opcaoMenu == '3') or ($opcaoMenu == '4')))
  204.         {
  205.             $notebook->appendPage('Contratos',   $contrato); 
  206.         }
  207.         if (($ent_ini['Contas']) and (($opcaoMenu == '3') or ($opcaoMenu == '4')))
  208.         {
  209.             $notebook->appendPage('Contas',      $conta);    
  210.         }            
  211.         if (($ent_ini['Boletos']) and ($opcaoMenu == '3'))
  212.         {
  213.             $notebook->appendPage('Boletos',      $boleto); 
  214.         }            
  215.         if (($ent_ini['Vinculos']) and (($opcaoMenu == '3') or ($opcaoMenu == '4')))
  216.         {
  217.             $notebook->appendPage('Vínculos',    $vinculado);  
  218.         }
  219.         if (($ent_ini['Carteiras']) and ($opcaoMenu == '3'))
  220.         {
  221.             $notebook->appendPage('Carteiras',    $carteira); 
  222.         }     
  223.         if (($ent_ini['Mandatos']) and ($opcaoMenu == '3'))
  224.         {
  225.             $notebook->appendPage('Mandatos',    $mandato);
  226.         }
  227.         if (($ent_ini['Atendimentos']) and ($opcaoMenu == '3'))
  228.         {
  229.             $notebook->appendPage('Atendimentos'$atendimento);
  230.         }
  231.         if (($ent_ini['Ocorrencias']) and ($opcaoMenu == '3'))
  232.         {                
  233.             $notebook->appendPage('Ocorrências'$ocorrencias);   
  234.         } 
  235.         // monta pagina
  236.         
  237.         $vbox = new TVBox;
  238.         $vbox->style 'width: 100%';
  239.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  240.         $vbox->add($this->form);
  241.         $vbox->add($notebook);
  242.         parent::add($vbox);
  243.         
  244.     }
  245.         
  246.     // define mascara programatico
  247.         
  248.     public function show()
  249.     {
  250.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onClear') )
  251.         {
  252.            $this->onClear(0);
  253.         }
  254.         parent::show();
  255.     }    
  256.     // limpa o form
  257.     public function onClear($param)
  258.     {
  259.         $objeto = new stdClass;       
  260.         $objeto->id '';
  261.         $objeto->nome '';
  262.         $objeto->pessoas_id '';
  263.         $objeto->entidades_id '';
  264.         $objeto->programatico '';
  265.         TSession::setValue('id_ent'0);
  266.         
  267.         $this->form->setData($objeto); 
  268.     }
  269.     // apresenta dados no form
  270.         
  271.     public static function onEditeEntidade$param )
  272.     {
  273.         try
  274.         {
  275.             if (isset($param['key']))
  276.             {
  277.                 TTransaction::open('setcis'); 
  278.                 
  279.                 $id_ent = (int) $param['key']; 
  280.                 
  281.                 TSession::setValue('id_ent'$id_ent);
  282.                 
  283.                 $objetoEntidade = new entidade($id_ent);
  284.                 
  285.                 $objetoForm = new stdClass;
  286.                 
  287.                 if ($objetoEntidade)
  288.                 {
  289.                    $objetoForm->id $objetoEntidade->id;
  290.                    $objetoForm->nome $objetoEntidade->nome;
  291.                    $objetoForm->pessoas_id $objetoEntidade->pessoas_id;
  292.                    $objetoForm->entidades_id $objetoEntidade->entidades_id;
  293.                    $objetoForm->programatico $objetoEntidade->programatico;
  294.                 }  
  295.                 TForm::sendData('form_entidade'$objetoForm);
  296.                 $form_pessoais = new PessoaisForm($id_ent);
  297.                 $form_endereco = new EnderecoForm($id_ent);
  298.                 $form_inscricao = new InscricaoForm($id_ent);
  299.                 $form_inscricao = new EletronicoForm($id_ent);
  300.                 
  301.                 TTransaction::close(); 
  302.             }
  303.         }
  304.         catch (Exception $e
  305.         {
  306.             new TMessage('error'$e->getMessage()); 
  307.             TTransaction::rollback(); 
  308.         }
  309.     }        
  310.     
  311.     // method onSave
  312.     public function onSave($param)
  313.     {
  314.         try
  315.         {
  316.             TTransaction::open('setcis');
  317.                 
  318.             $this->form->validate(); 
  319.             
  320.             $data $this->form->getData(); 
  321.             if (!$param['id'])
  322.             {
  323.                 $entidades = new entidade;
  324.             }
  325.             else
  326.             {
  327.                 $entidades = new entidade($data->id);
  328.             }
  329.                 
  330.             $entidades->fromArray( (array) $data); 
  331.             $entidades->store();
  332.             
  333.             $data->id $entidades->id;
  334.             
  335.             $this->form->setData($data); 
  336.                 
  337.             new TMessage('info''Record saved');
  338.                 
  339.             TTransaction::close(); 
  340.         }
  341.         catch (Exception $e
  342.         {
  343.             new TMessage('error'$e->getMessage());
  344.             TTransaction::rollback();
  345.         }
  346.     }
  347.     
  348.     // confirma antes da exclusão
  349.     
  350.     public static function onDelete($param)
  351.     {
  352.         $action = new TAction([__CLASS__'Delete']);
  353.         $action->setParameters($param);
  354.         
  355.         new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
  356.     }        
  357.     // method delete
  358.  
  359.     public function Delete($param)
  360.     {   
  361.         try
  362.         {
  363.             TTransaction::open('setcis'); 
  364.                 
  365.             $id $param['id'];
  366.               
  367.             $entidades = new entidade($id);
  368.             $entidades->delete();
  369.             
  370.             TTransaction::close(); 
  371.                 
  372.             $pos_action = new TAction([__CLASS__'onClear']);
  373.                 
  374.             new TMessage('info'TAdiantiCoreTranslator::translate('Record deleted'), $pos_action); 
  375.         }
  376.         catch (Exception $e
  377.         {
  378.             new TMessage('error'$e->getMessage());
  379.                 
  380.             TTransaction::rollback();
  381.         }    
  382.     }     
  383. }         
  384.         
NR

Acredito que o problema possa estar relacionado a função onEditEntidade definida como estática. Tente alterar a função onLoad da classe EnderecoForm para carregar o fieldlist também de maneira estática:
  1. <?php
  2. // function onLoad
  3. $objEndereco EntidadeEndereco::where('entidade_id''='$id_ent)->load();
  4.             
  5. $this->fieldlist->addHeader();
  6.           
  7. $objForm = new stdClass;
  8.             
  9. if ($objEndereco)
  10. {
  11.        foreach ($objEndereco as $end)
  12.        {
  13.              $row $this->fieldlist->addDetail(new stdclass);
  14.              $row->del($row->get(count($row->getChildren())-1));                   
  15.              
  16.              $objForm->list_id[] = $end->id;
  17.              $objForm->list_enderecos_id[] = $end->enderecos_id;
  18.              $objForm->list_cep[] = $end->cep;
  19.              $objForm->list_logradouros_id[] = $end->logradouros_id;
  20.              $objForm->list_endereco[] = $end->endereco;
  21.              $objForm->list_numero[] = $end->numero;
  22.              $objForm->list_complemento[] = $end->complemento;
  23.              $objForm->list_bairro[] = $end->bairro;
  24.              $objForm->list_cidade_id[] = $end->cidade_id;
  25.              $objForm->list_estado_id[] = $end->estado_id;
  26.        }               
  27.        TForm::sendData('form_endereco',$objForm);
  28.       ...
  29. ?>
AT

Nataniel boa noite...

Obrigado por retornar, desculpe a insistência, mas a classe principal onEditeEntidade, deve ser o problema, uma vez que carrega o form_pessoais com foto normalmente, fiz as alterações conforme vc sugeriu transformando onLoad da classe EnderecoForm em static, mas deu muitos erros e não funcionou, com a inclusão do TForm::sendData, carrega uma linha e fica mudando os registros intermitentemente, no teste são 3 objetos, ficam girando na mesma linha o tempo todo, criei uma versão usando datagrid tb não carrega no mesmo local em $this->datagrid->addItem($end), sendo que a classe EnderecoForm executada direto na url carrega tudo normalmente, deve ter uma forma de fazer funcionar, inclusive usando javascript, por favor me ajude a encontrar uma solução!!!

[] obrigado

Augusto
AT

public function onLoad($param)
{
try
{
$id_ent = TSession::getValue('id_ent');

TTransaction::open('setcis');

$tabEndereco = EntidadeEndereco::where('entidade_id', '=', $id_ent)->load();

$this->datagrid->clear();

if ($tabEndereco)
{
foreach ($tabEndereco as $end)
{
$this->datagrid->addItem($end); <-AQUI NÃO CARREGA O GRID
}
}

TTransaction::close();

$this->loaded = true;
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());

TTransaction::rollback();
}
}


public function onLoad($param)
{
try
{
TTransaction::open('setcis');

$id_ent = TSession::getValue('id_ent');

$objEndereco = EntidadeEndereco::where('entidade_id', '=', $id_ent)->load();

$this->fieldlist->addHeader();

$objForm = new stdClass;

if ($objEndereco)
{
foreach ($objEndereco as $end)
{
$objForm->list_id = $end->id;
$objForm->list_enderecos_id = $end->enderecos_id;
$objForm->list_cep = $end->cep;
$objForm->list_logradouros_id = $end->logradouros_id;
$objForm->list_endereco = $end->endereco;
$objForm->list_numero = $end->numero;
$objForm->list_complemento = $end->complemento;
$objForm->list_bairro = $end->bairro;
$objForm->list_cidade_id = $end->cidade_id;
$objForm->list_estado_id = $end->estado_id;

TForm::sendData('form_endereco',$objForm);
//$row = TFieldList::addDetail('fdlEndereco', $objForm);
$row = $this->fieldlist->addDetail($objForm); <-AQUI NÃO CARREGA O FIELLIST
$row->del($row->get(count($row->getChildren())-1));
}
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
else
{
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}