classe dentro de classe Amigo Nataniel, salvador da pátria, o meu código de uma classe está muito extenso, eu posso dividí-la em outra classe e fazer tipo o include? no caso é um mestre detalhe e os detalhes ficaram em uma das abas do notebook e eu só irei ativá-la, quando for gerado o código do mestre, que aliás o mestre contém muitos campos, bom não sei se deu para entender!...
MO
classe dentro de classe  
Fechado
Amigo Nataniel, salvador da pátria, o meu código de uma classe está muito extenso, eu posso dividí-la em outra classe e fazer tipo o include?
no caso é um mestre detalhe e os detalhes ficaram em uma das abas do notebook e eu só irei ativá-la, quando for gerado o código do mestre,
que aliás o mestre contém muitos campos, bom não sei se deu para entender!

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 (5)


NR

Dê uma olhada no exemplo do link abaixo, é possível separar o código em 2 partes, view e control:
adianti.com.br/framework_files/tutor/index.php?class=FormReusableCon
MO

Natiniel amigo, até entendi a idéia, mas o chamado dos campos que criei não está dando certo, fica dando erro setfields, o sr. poderia por favor exemplificar pra mim? vou postar meu código como está e se der me mostrar o erro?

 
  1. <?php
  2. /**
  3. * TitularMestreDetalheForm Master/Detail
  4. * @author <your name here>
  5. */
  6. class TitularMestreDetalheForm extends TPage
  7. {
  8. private $notebook;
  9. private $form;
  10. /**
  11. * Class constructor
  12. * Creates the page
  13. */
  14. function __construct( $param )
  15. {
  16. parent::__construct();
  17. //criando notebook
  18. $this->notebook = new BootstrapNotebookWrapper( new TNotebook(1100,500) );
  19. //$this->notebook = new TNotebook(1100,500);
  20. //criando formulario
  21. //$this->form = new TForm;
  22. $this->form = new ComposicaoFamiliarForm;
  23. //adicionando o notebook dentro do form
  24. $this->form->add($this->notebook);
  25. //Criando o componente HTML
  26. $html = new THtmlEditor('observacao');
  27. $html->setSize(900, 400);
  28. //adicionando uma tabela ao notebook
  29. $page1 = new TTable;
  30. $page2 = new TTable;
  31. $page3 = new TTable;
  32. $page1-> width = '99%';
  33. //criando um Panel
  34. $panel1 = new TPanel(1000,400);
  35. $page1->addRowSet($panel1);
  36. $panel2 = new TPanel(1000,400);
  37. $page3->addRowSet($panel2);
  38. //adicionando duas páginas ao notebook
  39. $this->notebook->appendPage('Dados Pessoais', $page1);
  40. $this->notebook->appendPage('Observação', $page2);
  41. $this->notebook->appendPage('Composição Familiar', $page3);
  42. //desligando as abas do notebook
  43. //$this->notebook->setTabsVisibility(False);
  44. // create the form fields
  45. $id = new TEntry('id'); //40
  46. $nome = new TEntry('nome'); //225
  47. $apelido = new TEntry('apelido'); //86
  48. $cpf = new TEntry('cpf'); //111
  49. $nis = new TEntry('nis'); //119
  50. $celular1 = new TEntry('celular1'); //115
  51. $celular2 = new TEntry('celular2'); //115
  52. $telefone = new TEntry('telefone'); //105
  53. $contato = new TEntry('contato'); //123
  54. $sexo = new TCombo('sexo'); //44
  55. $pai = new TEntry('pai'); //225
  56. $mae = new TEntry('mae'); //225
  57. $rg = new TEntry('rg'); //110
  58. $viarg = new TEntry('viarg'); //55
  59. $datemisrg = new TDate('datemisrg'); //80
  60. $ufrg = new TCombo('ufrg'); //55
  61. $orgexprg = new TEntry('orgexprg'); //95
  62. $datnasc = new TDate('datnasc'); //80
  63. $naturalidade = new TEntry('naturalidade'); //230
  64. $endereco = new TEntry('endereco'); //213
  65. $numero = new TEntry('numero'); //80
  66. $complemento = new TEntry('complemento'); //100
  67. $pontoref = new TEntry('pontoref'); //195
  68. $cep = new TEntry('cep'); //80
  69. $localtrabalho = new TEntry('localtrabalho'); //303
  70. $qualnecespecial = new TEntry('qualnecespecial'); //151
  71. $necadap = new TCombo('necadap'); //58
  72. $qtdpesres = new TSpinner('qtdpesres'); //62
  73. $valorbeneficio = new TEntry('valorbeneficio'); //73
  74. $desistente = new TCombo('desistente'); //67
  75. $declaracao = new TCombo('declaracao'); //67
  76. $situacaoderua = new TCombo('situacaoderua'); //67
  77. $assocmorador = new TEntry('assocmorador'); //382
  78. $participa = new TCombo('participa'); //67
  79. $situacao_trab_id = new TDBCombo('situacao_trab_id','permission','SituacaoTrab','id','situacaotrab'); //260
  80. $escolaridade_id = new TDBCombo('escolaridade_id','permission','Escolaridade','id','escolaridade');//260
  81. $ocupacaoprof_id = new TDBCombo('ocupacaoprof_id','permission','Ocupacaoprof','id','descricao'); //260
  82. $tipo_nec_esp_id = new TDBCombo('tipo_nec_esp_id','permission','TipoNecEsp','id','necespecial'); //260
  83. $tempo_trabalho_id = new TDBCombo('tempo_trabalho_id','permission','TempoTrabalho','id','TempoTrab'); //200
  84. $renda_mensal_id = new TDBCombo('renda_mensal_id','permission','RendaMensal','id','renda'); //180
  85. $estado_civil_id = new TDBCombo('estado_civil_id','permission','EstadoCivil','id','estadocivil'); //180
  86. $beneficio_id = new TDBCombo('beneficio_id','permission','Beneficio','id','beneficio'); //180
  87. $sitconjugal_id = new TDBCombo('sitconjugal_id','permission','Sitconjugal','id','sitconjugal'); //180
  88. $bairro_id = new TDBCombo('bairro_id','permission','Bairro','id','bairro'); //200
  89. $logradouro_id = new TDBCombo('logradouro_id','permission','Logradouro','id','descricao'); //180
  90. $rendatotal = new TEntry('rendatotal'); //185
  91. $renda_comp_id = new TDBCombo('renda_comp_id','permission','RendaCompl','id','tipoderenda'); //180
  92. $observacao = $html; //new TText('observacao'); //500
  93. //$field3 = $this->form->field3; //new TEntry('field3');
  94. //$field4 = $this->form->field4; //new TEntry('field4');
  95. //desabilitando o campo código
  96. $id->setEditable(False);
  97. //adicionando itens ao combo sexo
  98. $combosexo_items = array(1=>"M",2=>"F");
  99. $sexo->addItems($combosexo_items);
  100. //adicionando itens ao combo UF
  101. $comboufrg_items = array(1=>"SP",2=>"RJ",3=>"AC",4=>"AL",5=>"AM",
  102. 6=>"AP",7=>"BA",8=>"CE",9=>"DF",10=>"ES",
  103. 11=>"GO",12=>"MA",13=>"MG",14=>"MS",15=>"MT",
  104. 16=>"PA",17=>"PB",18=>"PE",19=>"PI",20=>"PR",
  105. 21=>"RN",22=>"RO",23=>"RR",24=>"RS",25=>"SC",
  106. 26=>"SE");
  107. $ufrg->addItems($comboufrg_items);
  108. //adicionando opções de sim/nao ao combo
  109. $combo_items = array(1=>"Sim",2=>"Não");
  110. //adicionando itens ao combo nec.adap/declaração/desistente/situação de rua/participa
  111. $necadap->addItems($combo_items);
  112. $declaracao->addItems($combo_items);
  113. $desistente->addItems($combo_items);
  114. $situacaoderua->addItems($combo_items);
  115. $participa->addItems($combo_items);
  116. //valores para o spinner Qt. Pessoas Resid.
  117. $qtdpesres->setRange(0,20,1);
  118. // change the size for some fields
  119. $id->setSize(70); //ok
  120. $nome->setSize(260); //ok
  121. $apelido->setSize(140); //ok
  122. $cpf->setSize(111); //ok
  123. $nis->setSize(111); //ok
  124. $celular1->setSize(115); //ok
  125. $celular2->setSize(115); //ok
  126. $telefone->setSize(105); //ok
  127. $contato->setSize(145); //ok
  128. $sexo->setSize(44); //ok
  129. $pai->setSize(260); //ok
  130. $mae->setSize(260); //ok
  131. $rg->setSize(140); //ok
  132. $viarg->setSize(55); //ok
  133. $datemisrg->setSize(80); //ok
  134. $ufrg->setSize(55); //ok
  135. $orgexprg->setSize(95); //ok
  136. $datnasc->setSize(80); //ok
  137. $naturalidade->setSize(175); //ok
  138. $endereco->setSize(205); //ok
  139. $numero->setSize(80); //ok
  140. $complemento->setSize(90); //ok
  141. $pontoref->setSize(290); //ok
  142. $cep->setSize(80); //ok
  143. $localtrabalho->setSize(250); //ok
  144. $tipo_nec_esp_id->setSize(180); //ok
  145. $qualnecespecial->setSize(180); //ok
  146. $necadap->setSize(58); //ok
  147. $qtdpesres->setSize(62); //ok
  148. $valorbeneficio->setSize(73); //ok
  149. $declaracao->setSize(67); //ok
  150. $situacaoderua->setSize(67); //ok
  151. $desistente->setSize(67); //ok
  152. $assocmorador->setSize(382);
  153. $participa->setSize(67);
  154. $situacao_trab_id->setSize(195); //ok
  155. $escolaridade_id->setSize(260); //ok
  156. $ocupacaoprof_id->setSize(340); //ok
  157. $tempo_trabalho_id->setSize(147); //ok
  158. $renda_mensal_id->setSize(180); //ok
  159. $estado_civil_id->setSize(100); //ok
  160. $sitconjugal_id->setSize(100); //ok
  161. $beneficio_id->setSize(185); //ok
  162. $bairro_id->setSize(150); //ok
  163. $logradouro_id->setSize(180); //ok
  164. $rendatotal->setSize(105); //ok
  165. $renda_comp_id->setSize(180); //ok
  166. //adicionando os campos no Panel da tabela1
  167. $panel1->put(new TLabel('Codigo'), 20, 16);
  168. $panel1->put(new TLabel('Nome do Titular'), 95, 16); // (col,lin)
  169. $panel1->put(new TLabel('Apelido'), 360, 16); // (col,lin)
  170. $panel1->put(new TLabel('Sexo'), 505, 16); // (col,lin)
  171. $panel1->put(new TLabel('Escolaridade'), 555, 16); // (col,lin)
  172. $panel1->put(new TLabel('C.P.F'), 820, 16); // (col,lin)
  173. $panel1->put(new TLabel('Nis'), 937, 16); // (col,lin)
  174. $panel1->put(new TLabel('Celular-1'), 20, 71); // (col,lin)
  175. $panel1->put(new TLabel('Celular-2'), 140, 71); // (col,lin)
  176. $panel1->put(new TLabel('Telefone'), 260, 71); // (col,lin)
  177. $panel1->put(new TLabel('Contato'), 370, 71); // (col,lin)
  178. $panel1->put(new TLabel('Pai'), 520, 71); // (col,lin)
  179. $panel1->put(new TLabel('Mãe'), 785, 71); // (col,lin)
  180. $panel1->put(new TLabel('Nº.Ident.'), 20, 126); // (col,lin)
  181. $panel1->put(new TLabel('Via RG'), 165, 126); // (col,lin)
  182. $panel1->put(new TLabel('Data Emis.'), 225, 126); // (col,lin)
  183. $panel1->put(new TLabel('Órgão Exp.'), 335, 126); // (col,lin)
  184. $panel1->put(new TLabel('UF.RG'), 435, 126); // (col,lin)
  185. $panel1->put(new TLabel('Data Nasc.'), 495, 126); // (col,lin)
  186. $panel1->put(new TLabel('Naturalidade'), 600, 126); // (col,lin)
  187. $panel1->put(new TLabel('CEP'), 780, 126); // (col,lin)
  188. $panel1->put(new TLabel('Logradouro'), 865, 126); // (col,lin)
  189. $panel1->put(new TLabel('Endereco'), 20, 181); // (col,lin)
  190. $panel1->put(new TLabel('Bairro'), 230, 181); // (col,lin)
  191. $panel1->put(new TLabel('Número'), 385, 181); // (col,lin)
  192. $panel1->put(new TLabel('Complemento'), 470, 181); // (col,lin)
  193. $panel1->put(new TLabel('Ponto de Referencia'), 565, 181); // (col,lin)
  194. $panel1->put(new TLabel('Portador de Nec.Esp'), 860, 181); // (col,lin)
  195. $panel1->put(new TLabel('Qual Nec.Esp.'), 20, 236); // (col,lin)
  196. $panel1->put(new TLabel('Nec.Adap'), 200, 236); // (col,lin)
  197. $panel1->put(new TLabel('Estado Civil'), 268, 236); // (col,lin)
  198. $panel1->put(new TLabel('Sit. Conjugal'), 372, 236); // (col,lin)
  199. $panel1->put(new TLabel('Qt.P.Resid'), 477, 236); // (col,lin)
  200. $panel1->put(new TLabel('Ocupação / Profissão'), 548, 236); // (col,lin)
  201. $panel1->put(new TLabel('Tempo de Trab.'), 893, 236); // (col,lin)
  202. $panel1->put(new TLabel('Situação Trabalhista'), 20, 291); // (col,lin)
  203. $panel1->put(new TLabel('Local Trabalho'), 220, 291); // (col,lin)
  204. $panel1->put(new TLabel('Renda Mensal'), 475, 291); // (col,lin)
  205. $panel1->put(new TLabel('Renda Complem'), 660, 291); // (col,lin)
  206. $panel1->put(new TLabel('Beneficio'), 845, 291); // (col,lin)
  207. $panel1->put(new TLabel('Val.Benef'), 20, 346); // (col,lin)
  208. $panel1->put(new TLabel('Renda.Tot'), 135, 346); // (col,lin)
  209. $panel1->put(new TLabel('Declaração'), 210, 346); // (col,lin)
  210. $panel1->put(new TLabel('Sit.Rua'), 285, 346); // (col,lin)
  211. $panel1->put(new TLabel('Desist.'), 360, 346); // (col,lin)
  212. $panel1->put(new TLabel('Associação de Moradores'), 432, 346); // (col,lin)
  213. $panel1->put(new TLabel('Participa'), 820, 346); // (col,lin)
  214. ## inserindo campos na pagina 1
  215. $panel1->put($id, 20, 35);
  216. $panel1->put($nome, 95, 35);
  217. $panel1->put($apelido, 360, 35);
  218. $panel1->put($sexo, 505, 35);
  219. $panel1->put($escolaridade_id, 555, 35);
  220. $panel1->put($cpf, 820, 35);
  221. $panel1->put($nis, 937, 35);
  222. $panel1->put($celular1, 20, 90);
  223. $panel1->put($celular2, 140, 90);
  224. $panel1->put($telefone, 260, 90);
  225. $panel1->put($contato, 370, 90);
  226. $panel1->put($pai, 520, 90);
  227. $panel1->put($mae, 785, 90);
  228. $panel1->put($rg, 20, 145);
  229. $panel1->put($viarg, 165, 145);
  230. $panel1->put($datemisrg, 225, 145);
  231. $panel1->put($orgexprg, 335, 145);
  232. $panel1->put($ufrg, 435, 145);
  233. $panel1->put($datnasc, 495, 145);
  234. $panel1->put($naturalidade, 600, 145);
  235. $panel1->put($cep, 780, 145);
  236. $panel1->put($logradouro_id, 865, 145);
  237. $panel1->put($endereco, 20, 200);
  238. $panel1->put($bairro_id, 230, 200);
  239. $panel1->put($numero, 385, 200);
  240. $panel1->put($complemento, 470, 200);
  241. $panel1->put($pontoref, 565, 200);
  242. $panel1->put($tipo_nec_esp_id, 860, 200);
  243. $panel1->put($qualnecespecial, 20, 255);
  244. $panel1->put($necadap, 205, 255);
  245. $panel1->put($estado_civil_id, 268, 255);
  246. $panel1->put($sitconjugal_id, 372, 255);
  247. $panel1->put($qtdpesres, 477, 255);
  248. $panel1->put($ocupacaoprof_id, 548, 255);
  249. $panel1->put($tempo_trabalho_id,893, 255);
  250. $panel1->put($situacao_trab_id, 20, 310);
  251. $panel1->put($localtrabalho, 220, 310);
  252. $panel1->put($renda_mensal_id, 475, 310);
  253. $panel1->put($renda_comp_id, 660, 310);
  254. $panel1->put($beneficio_id, 845, 310);
  255. $panel1->put($valorbeneficio, 20, 365);
  256. $panel1->put($rendatotal, 100, 365);
  257. $panel1->put($declaracao, 210, 365);
  258. $panel1->put($situacaoderua, 285, 365);
  259. $panel1->put($desistente, 360, 365);
  260. $panel1->put($assocmorador, 432, 365);
  261. $panel1->put($participa, 820, 365);
  262. //adicionando campos na aba2
  263. $page2->addRowSet($html);
  264. $button1 = new TButton('action1');
  265. $button1->setAction( new TAction( array($this,'onStep2')),'Avançar');
  266. $button1->setImage('fa:save.png');
  267. $button2 = new TButton('action2');
  268. $button2->setAction( new TAction( array($this,'onStep1')),'Voltar');
  269. $button3 = new TButton('action3');
  270. $button3->setAction( new TAction( array($this,'onSave')),'Salvar');
  271. $page1->addRowSet( $button1 );
  272. $page2->addRowSet( $button2, $button3 );
  273. //capturando os campos do formulário
  274. $this->form->setFields(array($id,$nome,$apelido,$sexo,$escolaridade_id,$cpf,$nis,$celular1,$celular2,$telefone,$contato,$pai,$mae,
  275. $rg,$viarg,$datemisrg,$orgexprg,$ufrg,$datnasc,$naturalidade,$logradouro_id,$cep,$endereco,$bairro_id,
  276. $numero,$complemento,$pontoref,$tipo_nec_esp_id,$qualnecespecial,$necadap,$estado_civil_id,$sitconjugal_id,
  277. $qtdpesres,$ocupacaoprof_id,$tempo_trabalho_id,$situacao_trab_id,$localtrabalho,$renda_mensal_id,
  278. $renda_comp_id,$beneficio_id,$valorbeneficio,$rendatotal,$declaracao,$situacaoderua,$desistente,
  279. $assocmorador,$participa,$field3,$field4,$button1,$button2,$button3,$html,$field3,$field4));
  280. parent::add($this->form);
  281. }
  282. public function onStep2()
  283. {
  284. $data = $this->form->getData();
  285. $this->form->setData($data);
  286. $this->notebook->setCurrentPage( 1 );
  287. }
  288. public function onStep1()
  289. {
  290. $this->notebook->setCurrentPage( 0 );
  291. $this->form->setData($this->form->getData());
  292. }
  293. public function onSave($param)
  294. {
  295. $this->notebook->setCurrentPage( 1 ); //página atual de salvamento
  296. try
  297. {
  298. TTransaction::open('permission'); // open a transaction
  299. /**
  300. // Enable Debug logger for SQL operations inside the transaction
  301. TTransaction::setLogger(new TLoggerSTD); // standard output
  302. TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
  303. **/
  304. $this->form->validate(); // valida dados do form
  305. $object = new Titular; // cria os objetos em branco
  306. $data = $this->form->getData(); // pega dados do form como array
  307. $object->fromArray( (array) $data); // lê os objetos do array
  308. $object->store(); // salva os objetos
  309. // get the generated id
  310. $data->id = $object->id;
  311. $this->form->setData($data); // preenche o formulário
  312. TTransaction::close(); // fecha a transação
  313. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  314. }
  315. catch (Exception $e) // in case of exception
  316. {
  317. new TMessage('error', $e->getMessage()); // mostra os erros de exceção
  318. $this->form->setData( $this->form->getData() ); // continua com os dados
  319. TTransaction::rollback(); // undo all pending operations
  320. }
  321. }
  322. /**
  323. * Load object to form data
  324. * @param $param Request
  325. */
  326. public function onEdit( $param )
  327. {
  328. try
  329. {
  330. if (isset($param['key']))
  331. {
  332. $key = $param['key']; // pega a chave do parametro
  333. TTransaction::open('permission'); // abre a transação
  334. $object = new Titular($key); // instancia o registro
  335. $this->form->setData($object); // preenche o formulário
  336. TTransaction::close(); // fecha a transação
  337. }
  338. else
  339. {
  340. $this->form->clear();
  341. }
  342. }
  343. catch (Exception $e) // in case of exception
  344. {
  345. new TMessage('error', $e->getMessage()); // shows the exception error message
  346. TTransaction::rollback(); // undo all pending operations
  347. }
  348. }
  349. } </your>
MO

 
  1. <?php
  2. /**
  3. * TitularMestreDetalheForm Master/Detail
  4. * @author <your name here>
  5. */
  6. class ComposicaoFamiliarForm extends TPage
  7. {
  8. function __construct()
  9. {
  10. parent::__construct();
  11. $this->form = new TForm;
  12. // create the form fields
  13. $field3 = new TEntry('field3');
  14. $field4 = new TEntry('field4');
  15. //capturando os campos do formulário
  16. $this->form->setFields(array($field3,$field4));
  17. parent::add($this->form);
  18. }
  19. } </your>
MO

O Erro:
Fatal error: Call to undefined method ComposicaoFamiliarForm::setFields() in D:VertrigoServwwwsisbsappcontrolapresentacaoTitularMestreDetalheForm.class.php on line 310
NR

Marcos, a classe View(ComposicaoFamiliarForm) deve ser filha de TForm e não de TPage. No link que te passei só aparece o código da control, por isso segue código da view:
 
  1. <?php
  2. /**
  3. * FormReusableView
  4. *
  5. * @version 1.0
  6. * @package samples
  7. * @subpackage tutor
  8. * @author Pablo Dall'Oglio
  9. * @copyright Copyright (c) 2006-2014 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10. * @license http://www.adianti.com.br/framework-license
  11. */
  12. class FormReusableView extends TForm
  13. {
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. // create the notebook
  18. $notebook = new TNotebook(400, 280);
  19. parent::add($notebook);
  20. // creates the notebook page
  21. $this->table = new TTable;
  22. // adds the notebook page
  23. $notebook->appendPage('Reusable view', $this->table);
  24. // create the form fields
  25. $fields[] = new TEntry('field1');
  26. $fields[] = $date = new TDate('field2');
  27. $fields[] = $text = new TText('field3');
  28. $fields[] = $combo = new TCombo('field4');
  29. $fields[] = new TPassword('field5');
  30. $date->setSize(100);
  31. $text->setSize(200,100);
  32. $combo->addItems(array('1'=>'One', '2'=>'Two'));
  33. for ($n=0; $n<5; $n++)
  34. {
  35. // add a row for one field
  36. $row=$this->table->addRow();
  37. $row->addCell(new TLabel('Field '.($n+1)));
  38. $row->addCell( $fields[$n] );
  39. }
  40. // define wich are the form fields
  41. parent::setFields($fields);
  42. }
  43. /**
  44. * Add a form action
  45. * @param $name Action name
  46. * @param $callback Action callback
  47. * @param $label Action label
  48. * @param $icon Action icon
  49. */
  50. public function addAction($name, $callback, $label, $icon)
  51. {
  52. // creates the action button
  53. $button1=new TButton($name);
  54. $button1->setAction($callback, $label);
  55. $button1->setImage($icon);
  56. // add the field to the form
  57. parent::addField($button1);
  58. // add a row for the button
  59. $row=$this->table->addRow();
  60. $row->addCell($button1);
  61. }
  62. }
  63. ?>

A ideia é que tudo que esteja vinculado ao form seja criado/instanciado na View e não na Control.