Erro ao gravar Senhores, boa noite, estou enfrentando um problema com relação a gravar um objeto no mysql. O cenário é o seguinte. tenho uma classe controller chamada FrmSolucao, que é responsável por manipular os dados da classe model Solucao. Num primeiro momento o que estou fazendo é o seguinte, tenho um TDBSeekButton que busca as reproduções realizadas e ao selecionar a que vou utilizar, tenho dois...
TS
Erro ao gravar  
Senhores, boa noite, estou enfrentando um problema com relação a gravar um objeto no mysql. O cenário é o seguinte. tenho uma classe controller chamada FrmSolucao, que é responsável por manipular os dados da classe model Solucao. Num primeiro momento o que estou fazendo é o seguinte, tenho um TDBSeekButton que busca as reproduções realizadas e ao selecionar a que vou utilizar, tenho dois TEntrys que recebem o cálculo de volume de solução que deverão ser aplicados na primeira e na segunda aplicação. Quando clico no botão Salvar o sistema está me retornado o erro no metodo set_reproducao e não estou conseguindo decifrar o problema, peço a ajuda de vocês, o erro está em anexo

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


IV

Olá Thiago, posta os códigos para facilitar a identificação.
TS

 
  1. <?php
  2. class FrmSolucao extends TPage
  3. {
  4. private $form;
  5. private $datagrid_primeira_aplicacao;
  6. private $datagrid_segunda_aplicacao;
  7. function __construct()
  8. {
  9. parent::__construct();
  10. //$this->form = new TQuickForm('form_Solucao');
  11. $this->form = new TQuickForm('form_solucao');
  12. $this->form->class = 'tform'; // change CSS class
  13. $this->form->style = 'display: table;width:70%; margin-left:50px;'; // change style
  14. //$this->form->setFormTitle('Aplicação de hormônios');
  15. $notebook = new BootstrapNotebookWrapper(new TNotebook(300, 350));
  16. $this->form->add($notebook);
  17. parent::include_css('app/resources/custom-notebook.css');
  18. // creates the containers for each notebook page
  19. $tbl_solucao = new TTable;
  20. $tbl_hormonio = new TTable;
  21. $tbl_soro = new TTable;
  22. $tbl_pAplicacao = new TTable;
  23. $tbl_sAplicacao = new TTable;
  24. $tbl_solucao->style = "margin: 2px;width:100%;";
  25. $tbl_pAplicacao->style = "margin: 4px";
  26. $tbl_sAplicacao->style = "margin: 4px";
  27. $tbl_hormonio->style = "margin: 4px";
  28. $tbl_soro->style = "margin: 4px";
  29. ####Campos primeira página######
  30. $idSolucao = new THidden('idSolucao');
  31. $cmbReproducao = new ">TDBSeekButton('idReproducao','dbwf',$this->form->getName(),'Reproducao','codigo','idReproducao','reproducao');
  32. $cod_reproducao = new TEntry('reproducao');
  33. $pVolTotalAplicado = new TEntry('pVolTotalAplicado');
  34. $pVolTotalAplicado->setTip('Volume total de solução a ser aplicado na primeira aplicação em mg');
  35. $sVolTotalAplicado = new TEntry('sVolTotalAplicado');
  36. $sVolTotalAplicado->setTip('Volume total de solução a ser aplicado na segunda aplicação em mg');
  37. //validações
  38. $cod_reproducao->setExitAction(new TAction(array($this,'onSelect')));
  39. ####Adicionando os campos na aba do notebook####
  40. $tbl_solucao->addRowSet(new TLabel(''),$idSolucao);
  41. $tbl_solucao->addRowSet(new TLabel('REPRODUÇÃO..:'),$cmbReproducao);
  42. $tbl_solucao->addRowSet(new TLabel('Nº..........:'),$cod_reproducao);
  43. $tbl_solucao->addRowSet(new TLabel('VOL. TOTAL 1ª APLICAÇÃO..:'),$pVolTotalAplicado);
  44. $tbl_solucao->addRowSet(new TLabel('VOL. TOTAL 2ª APLICAÇÃO..:'),$sVolTotalAplicado);
  45. #####Campos segunda Pagina#####
  46. $lista_soro = new TMultiField('lista_soro');
  47. $nome_soro = new TEntry('nomeSoro');
  48. $desc_soro = new TEntry('descSoro');
  49. $valor_soro = new TEntry('valorSoro');
  50. $qtdeSoroAplicKvP = new TEntry('qtdeSoroAplicKvP');
  51. $totalSoroAplicacao = new TEntry('totalSoroAplicacao');
  52. ####Adicionando os campos na aba do notebook####
  53. $row = $tbl_soro->addRow();
  54. $cell = $row->addCell(new TLabel('<b><h4>..::SORO::..</h4></b>'));
  55. $cell->valign = 'top';
  56. $lista_soro->setHeight(100);
  57. $lista_soro->setClass('Soro');
  58. $lista_soro->addField('nomeSoro','NOME'.':',$nome_soro,150);
  59. $lista_soro->addField('descSoro','DESCRIÇÃO'.':',$desc_soro,150);
  60. $lista_soro->addField('valorSoro','VALOR EM R$'.':',$valor_soro,70);
  61. $lista_soro->addField('qtdeSoroAplicKvP','TOTAL A SER APLICADO'.':',$qtdeSoroAplicKvP,70);
  62. $lista_soro->addField('totalSoroAplicacao','TOTAL SORO EM R$'.':',$totalSoroAplicacao,70);
  63. $row=$tbl_soro->addRow();
  64. $row->addCell($lista_soro);
  65. #####Campos terceira Página#######
  66. $lista_hormonio = new TMultiField('lista_hormonio');
  67. $nome_hormonio = new TEntry('nomeHormonio');
  68. $desc_hormonio = new TEntry('descHormonio');
  69. $valor_hormonio = new TEntry('valorHormonio');
  70. $qtdeHormonioAplicKvP = new TEntry('qtdeHormonioAplicKvP');
  71. $totalHormonioAplicacao = new TEntry('totalHormonioAplicacao');
  72. ####Adicionando os campos na aba do notebook####
  73. $row = $tbl_hormonio->addRow();
  74. $cell = $row->addCell(new TLabel('<b><h4>..::HORMÔNIO::..</h4></b>'));
  75. $cell->valign = 'top';
  76. $lista_hormonio->setHeight(100);
  77. $lista_hormonio->setClass('Hormonio');
  78. $lista_hormonio->addField('nomeHormonio','NOME'.':',$nome_hormonio,150);
  79. $lista_hormonio->addField('descHormonio','DESCRIÇÃO'.':',$desc_hormonio,150);
  80. $lista_hormonio->addField('valorHormonio','VALOR EM R$'.':',$valor_hormonio,70);
  81. $lista_hormonio->addField('qtdeHormonioAplicKvP','TOTAL A SER APLICADO'.':',$qtdeHormonioAplicKvP,70);
  82. $lista_hormonio->addField('totalHormonioAplicacao','TOTAL HORMÔNIO EM R$'.':',$totalHormonioAplicacao,70);
  83. $row=$tbl_hormonio->addRow();
  84. $row->addCell($lista_hormonio);
  85. #####Campos quarta Página#####
  86. //$row = $tbl_pAplicacao->addRow();
  87. $this->datagrid_primeira_aplicacao = new TQuickGrid;
  88. $this->datagrid_primeira_aplicacao->disableDefaultClick();
  89. $this->datagrid_primeira_aplicacao->addQuickColumn('Número', 'numero', 'center', 70);
  90. $this->datagrid_primeira_aplicacao->addQuickColumn('Identificação', 'identMatriz', 'right', 180);
  91. $this->datagrid_primeira_aplicacao->addQuickColumn('Peso', 'pesoMatriz', 'center', 180);
  92. $this->datagrid_primeira_aplicacao->addQuickColumn('Volume a Injetar', 'fone', 'left', 120);
  93. $this->datagrid_primeira_aplicacao->createModel();
  94. $row1 = $tbl_pAplicacao->addRow();
  95. $row1->addCell($this->datagrid_primeira_aplicacao);
  96. //$row->addCell($tbl_pAplicacao);
  97. #####Campos Quinta Página#####
  98. $this->datagrid_segunda_aplicacao = new TQuickGrid;
  99. $this->datagrid_segunda_aplicacao->disableDefaultClick();
  100. $this->datagrid_segunda_aplicacao->addQuickColumn('Code', 'code', 'right', 70);
  101. $this->datagrid_segunda_aplicacao->addQuickColumn('Name', 'name', 'left', 180);
  102. $this->datagrid_segunda_aplicacao->addQuickColumn('Address', 'address', 'left', 180);
  103. $this->datagrid_segunda_aplicacao->addQuickColumn('Phone', 'fone', 'left', 120);
  104. $this->datagrid_segunda_aplicacao->createModel();
  105. $row2 = $tbl_sAplicacao->addRow();
  106. $row2->addCell($this->datagrid_segunda_aplicacao);
  107. //$this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
  108. //$this->form->addQuickAction(_t('New'), new TAction(array($this, 'onClear')), 'bs:plus-sign green');
  109. $notebook->appendPage('Totais Solução', $tbl_solucao);
  110. $notebook->appendPage('Soro', $tbl_soro);
  111. $notebook->appendPage('Hormônio', $tbl_hormonio);
  112. $notebook->appendPage('1ª Aplicação', $tbl_pAplicacao);
  113. $notebook->appendPage('2ª Aplicação', $tbl_sAplicacao);
  114. $save_button=new TButton('save');
  115. $save_button->setAction(new TAction(array($this, 'onSave')), _t('Save'));
  116. $save_button->setImage('fa:floppy-o');
  117. // create an new button (edit with no parameters)
  118. $new_button=new TButton('new');
  119. $new_button->setAction(new TAction(array($this, 'onEdit')), _t('New'));
  120. $new_button->setImage('fa:plus-square green');
  121. $list_button=new TButton('list');
  122. $list_button->setAction(new TAction(array('FrmListaReproducao','onReload')), _t('Back to the listing'));
  123. $list_button->setImage('fa:table blue');
  124. $this->form->setFields(array($cmbReproducao, $cod_reproducao, $lista_soro, $save_button, $new_button, $list_button));
  125. $buttons = new THBox;
  126. $buttons->add($save_button);
  127. $buttons->add($new_button);
  128. $buttons->add($list_button);
  129. //$this->form->add($buttons);
  130. // vertical box container
  131. $container = new TVBox;
  132. $container->style = 'width: 60%; margin-left:5%;';
  133. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  134. $container->add(TPanelGroup::pack('Aplicação de Hormônios',$this->form));
  135. $container->add($buttons);
  136. parent::add($container);
  137. }
  138. public function onSave()
  139. {
  140. try
  141. {
  142. TTransaction::open('dbwf');
  143. $this->form->validate(); // validate form data
  144. $object =$this->form->getData('Solucao'); // create an empty object
  145. $idReproducao = $object->idSolucao;
  146. //$data = $this->form->getData(); // get form data as array
  147. $object->fromArray( (array) $data); // load the object with data
  148. $object->pVolTotalAplicado = str_replace(',','.', $object->pVolTotalAplicado);
  149. $object->sVolTotalAplicado = str_replace(',','.', $object->sVolTotalAplicado);
  150. var_dump($object);
  151. $object->store(); // save the object
  152. // get the generated idSolucao
  153. $data->idSolucao = $object->idSolucao;
  154. $this->form->setData($data); // fill form data
  155. TTransaction::close(); // close the transaction
  156. new TMessage('info','Registro Gravado com sucesso!');
  157. }
  158. catch(Exception $e)
  159. {
  160. new TMessage('Erro ao gravar o registro!', $e->getMessage()); // shows the exception error message
  161. $this->form->setData( $this->form->getData() ); // keep form data
  162. TTransaction::rollback(); //
  163. }
  164. }
  165. public function onReload()
  166. {
  167. $this->datagrid_primeira_aplicacao->clear();
  168. try
  169. {
  170. }
  171. catch(Exception $e)
  172. {
  173. // shows the exception error message
  174. new TMessage('Erro ao carregar os registros', $e->getMessage());
  175. // undo all pending operations
  176. TTransaction::rollback();
  177. }
  178. }
  179. public function onEdit()
  180. {
  181. }
  182. public static function onSelect($params)
  183. {
  184. $DSPV = 0.5;
  185. $DDPV = 5.0;
  186. if(isset($params['reproducao'])&& $params['reproducao'])
  187. {
  188. try
  189. {
  190. TTransaction::open('dbwf');
  191. $reproducao = new Reproducao($params['idReproducao']);
  192. $obj = new StdClass;
  193. $obj->pVolTotalAplicado = number_format(($DSPV * $reproducao->pesoGeralMatriz),2,'.',',');
  194. $obj->sVolTotalAplicado = number_format(($DDPV * $reproducao->pesoGeralMatriz),2,'.',',');
  195. TForm::sendData('form_solucao',$obj);
  196. TTransaction::close();
  197. }
  198. catch(Exception $e)
  199. {
  200. new TMessage('error', '<b>Erro</b> ' . $e->getMessage());
  201. TTransaction::rollback();
  202. }
  203. }
  204. }
  205. }
  206. ?>

TS

A classe é essa ai em cima!!!
TS

Meus posts estão dando falha de email not sent! o que é isso??
IV

Thiago observei duas coisas:

nesta linha
 
  1. <?php
  2. $cmbReproducao = new ">TDBSeekButton('idReproducao','dbwf',$this->form->getName(),'Reproducao','codigo','idReproducao','reproducao');
  3. ?>

eu creio que o correto seria:
 
  1. <?php
  2. $cmbReproducao = new ">TDBSeekButton('idReproducao','dbwf',$this->form->getName(),'Reproducao','reproducao','idReproducao','reproducao');
  3. ?>

e nesta remova 'Solucao' deixe apenas getData();
 
  1. <?php
  2. $object =$this->form->getData('Solucao');
  3. ?>

IV

Comigo também tá aparecendo "email not sent!" deve ser algum problema interno do forum.
TS

Postei o código da classe FrmSolucao.