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 Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


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

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