Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
TMultiFile não está salvando o caminho das imagens no banco ...
A
TMultiFile não está salvando o caminho das imagens no banco  
 
  1. <?php
  2. /**
  3. * ProntuarioobrigatorioForm Master/Detail
  4. * @author <your name here>
  5. */
  6. class ProntuarioobrigatorioForm extends TPage
  7. {
  8. protected $form; // form
  9. protected $detail_list;
  10. /**
  11. * Page constructor
  12. */
  13. public function __construct()
  14. {
  15. parent::__construct();
  16. // creates the form
  17. $this->form = new BootstrapFormBuilder('form_Prontuarioobrigatorio');
  18. $this->form->setFormTitle('Prontuario Obrigatório');
  19. // master fields
  20. //buscar paciente
  21. $COD_PAC = new ">TDBSeekButton('COD_PAC', 'banco', $this->form->getName(),'Paciente', 'NOME_PAC');
  22. $NOME_PACIENTE = new TEntry('NOME_PACIENTE');
  23. $COD_PAC->setDisplayLabel('PACIENTE');
  24. $COD_PAC->setAuxiliar($NOME_PACIENTE);
  25. //formatacao BUSCAR paciente
  26. $NOME_PACIENTE->setEditable(FALSE);
  27. $COD_PAC->setSize(80);
  28. $NOME_PACIENTE->setSize('calc(100% - 105px)');
  29. $NOME_PACIENTE->style .= ';margin-left:3px';
  30. $NOME_PAC = new THidden('NOME_PAC');
  31. $CID = new TEntry('CID');
  32. $AVAL_DEMANDA = new THtmlEditor('AVAL_DEMANDA');
  33. $OBJ_TRATAMENTO = new THtmlEditor('OBJ_TRATAMENTO');
  34. $REG_ENCAMINHAMENTO = new THtmlEditor('REG_ENCAMINHAMENTO');
  35. $REG_ENCERRAMENTO = new THtmlEditor('REG_ENCERRAMENTO');
  36. $ANEXOS = new TMultiFile('ANEXOS');
  37. $COD_PAC->setExitAction(new TAction(array($this, 'onExitActionPac')));
  38. // detail fields
  39. $detail_uniqid = new THidden('detail_uniqid');
  40. $detail_ID = new THidden('detail_ID');
  41. $detail_DATA_EVOLUCAO = new TDate('detail_DATA_EVOLUCAO');
  42. $detail_OBS_EVOLUCAO = new THtmlEditor('detail_OBS_EVOLUCAO');
  43. // master fields
  44. $this->form->addFields( [new TLabel('Paciente')], [$COD_PAC] );
  45. $this->form->addFields( [new TLabel('CID')], [$CID] );
  46. $this->form->addFields( [new THidden('NOME')], [$NOME_PAC] );
  47. $this->form->addFields( [new TLabel('Avaliação Demanda')], [$AVAL_DEMANDA] );
  48. $this->form->addFields( [new TLabel('Objetivo Tratamento')], [$OBJ_TRATAMENTO] );
  49. $this->form->addFields( [new TLabel('Registro Encaminhamento')], [$REG_ENCAMINHAMENTO] );
  50. $this->form->addFields( [new TLabel('Registro Encerramento')], [$REG_ENCERRAMENTO] );
  51. $this->form->addFields( [new TLabel('Anexos')], [$ANEXOS] );
  52. $AVAL_DEMANDA->setSize('100%',100);
  53. $OBJ_TRATAMENTO->setSize('100%',100);
  54. $REG_ENCAMINHAMENTO->setSize('100%',100);
  55. $REG_ENCERRAMENTO->setSize('100%',100);
  56. $CID->setValue("10/DSM5");
  57. //formatacao upload de imagem
  58. $ANEXOS->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg', 'pdf','docx'] );
  59. $ANEXOS->enableFileHandling();
  60. $ANEXOS->enablePopover();
  61. // detail fields
  62. $this->form->addContent( ['<h4>Registro de Evolução</h4><hr>'] );
  63. $this->form->addFields( [$detail_uniqid] );
  64. $this->form->addFields( [$detail_ID] );
  65. $this->form->addFields( [new TLabel('Data Evolucao')], [$detail_DATA_EVOLUCAO] );
  66. $this->form->addFields( [new TLabel('Obs Evolucao')], [$detail_OBS_EVOLUCAO] );
  67. //formatacao datas
  68. $detail_DATA_EVOLUCAO->setMask('dd/mm/yyyy');
  69. $detail_DATA_EVOLUCAO->setDatabaseMask('yyyy-mm-dd');
  70. $detail_OBS_EVOLUCAO->setSize('100%',100);
  71. $add = TButton::create('add', [$this, 'onDetailAdd'], 'Registrar', 'fa:plus-circle green');
  72. $add->getAction()->setParameter('static','1');
  73. $this->form->addFields( [], [$add] );
  74. $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
  75. $this->detail_list->setId('Registroevolucao_list');
  76. $this->detail_list->generateHiddenFields();
  77. $this->detail_list->style = "min-width: 700px; width:100%;margin-bottom: 10px";
  78. $evolu = new TDataGridColumn('DATA_EVOLUCAO', 'Data da evolução', 'left', 10);
  79. $criteria = new TCriteria;
  80. $criteria->setProperty('order', 'DATA_EVOLUCAO');
  81. $criteria->setProperty('direction', 'asc');
  82. // items
  83. $this->detail_list->addColumn( new TDataGridColumn('uniqid', 'Uniqid', 'center') )->setVisibility(false);
  84. $this->detail_list->addColumn( new TDataGridColumn('ID', 'Id', 'center') )->setVisibility(false);
  85. $this->detail_list->addColumn( $evolu)->setTransformer(function($value, $object, $row)
  86. {
  87. if($value)
  88. {
  89. $date = new DateTime($value);
  90. return $date->format("d/m/Y");
  91. }
  92. });
  93. $this->detail_list->addColumn( new TDataGridColumn('OBS_EVOLUCAO', 'Observação da evolução', 'left', 100) );
  94. //$DATA_EVOLUCAO->setAction(new TAction([$this, 'onReload']), ['order' => 'DATA_EVOLUCAO']);
  95. $this->detail_list->disableHtmlConversion();
  96. // detail actions
  97. $action1 = new TDataGridAction([$this, 'onDetailEdit'] );
  98. $action1->setFields( ['uniqid', '*'] );
  99. $action2 = new TDataGridAction([$this, 'onDetailDelete']);
  100. $action2->setField('uniqid');
  101. // add the actions to the datagrid
  102. $this->detail_list->addAction($action1, _t('Edit'), 'fa:edit blue');
  103. $this->detail_list->addAction($action2, _t('Delete'), 'far:trash-alt red');
  104. $this->detail_list->createModel();
  105. $panel = new TPanelGroup;
  106. $panel->add($this->detail_list);
  107. $panel->getBody()->style = 'overflow-x:auto';
  108. $this->form->addContent( [$panel] );
  109. $this->form->addAction( 'Salvar', new TAction([$this, 'onSave'], ['static'=>'1']), 'fa:save green');
  110. $this->form->addAction( 'Limpar', new TAction([$this, 'onClear']), 'fa:eraser red');
  111. $this->form->addHeaderAction( 'Salvar até aqui', new TAction([$this, 'onSave']), 'fa:save green' );
  112. // create the page container
  113. $container = new TVBox;
  114. $container->style = 'width: 100%';
  115. $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  116. $container->add($this->form);
  117. parent::add($container);
  118. }
  119. /**
  120. * Clear form
  121. * @param $param URL parameters
  122. */
  123. public function onClear($param)
  124. {
  125. $this->form->clear(TRUE);
  126. }
  127. /**
  128. * Load Master/Detail data from database to form
  129. */
  130. public function onEdit($param)
  131. {
  132. try
  133. {
  134. TTransaction::open('banco');
  135. if (isset($param['key']))
  136. {
  137. $key = $param['key'];
  138. $object = new Prontuarioobrigatorio($key);
  139. //$object->ANEXOS = Prontuarioobrigatorio::where('COD_PAC', '=', $param['key'])->getIndexedArray('id', 'image');
  140. $items = Registroevolucao::where('COD_PAC', '=', $key)->load();
  141. foreach( $items as $item )
  142. {
  143. $item->uniqid = uniqid();
  144. $row = $this->detail_list->addItem( $item );
  145. $row->id = $item->uniqid;
  146. }
  147. $this->form->setData($object);
  148. TTransaction::close();
  149. }
  150. else
  151. {
  152. $this->form->clear(TRUE);
  153. }
  154. }
  155. catch (Exception $e) // in case of exception
  156. {
  157. new TMessage('error', $e->getMessage());
  158. TTransaction::rollback();
  159. }
  160. }
  161. /**
  162. * Save the Master/Detail data from form to database
  163. */
  164. public function onSave($param)
  165. {
  166. try
  167. {
  168. // open a transaction with database
  169. TTransaction::open('banco');
  170. $file = "";
  171. if (!empty($param['ANEXOS']))
  172. {
  173. $file = json_decode(urldecode($param['ANEXOS']))->fileName;
  174. }
  175. $data = $this->form->getData();
  176. $this->form->validate();
  177. $master = new Prontuarioobrigatorio;
  178. $master->fromArray( (array) $data);
  179. $master->ANEXOS = $file;
  180. $master->store();
  181. $this->form->saveFiles($master, $data, 'ANEXOS', 'files/images');
  182. Registroevolucao::where('COD_PAC', '=', $master->COD_PAC)->delete();
  183. if( $param['Registroevolucao_list_DATA_EVOLUCAO'] )
  184. {
  185. foreach( $param['Registroevolucao_list_DATA_EVOLUCAO'] as $key => $item_id )
  186. {
  187. $detail = new Registroevolucao;
  188. $detail->DATA_EVOLUCAO = $param['Registroevolucao_list_DATA_EVOLUCAO'][$key];
  189. $detail->OBS_EVOLUCAO = $param['Registroevolucao_list_OBS_EVOLUCAO'][$key];
  190. $detail->COD_PAC = $master->COD_PAC;
  191. $detail->store();
  192. }
  193. }
  194. TTransaction::close(); // close the transaction
  195. TForm::sendData('form_Prontuarioobrigatorio', (object) ['id' => $master->COD_PAC]);
  196. new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
  197. }
  198. catch (Exception $e) // in case of exception
  199. {
  200. new TMessage('error', $e->getMessage());
  201. $this->form->setData( $this->form->getData() ); // keep form data
  202. TTransaction::rollback();
  203. }
  204. }
  205. }
  206. ?>

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

O componente TMultifile é usado para selecionar mais de um arquivo e por isso ele retorna um array.

Se a ideia é selecionar somente um arquivo, use TFile ao invés da TMultifile.
A

Eu preciso anexar varios arquivos mesmo, como posso pegar esse array?
NR

Você tem uma tabela relacionada para gravar os arquivos?
A

é gravado na mesma tabela do formulario
Prontuario{COD_PAC, NOME_PAC, CID, AVAL_DEMANDA, OBJ_TRATAMENTO, REG_ENCAMINHAMENTO, REG_ENCERRAMENTO, ANEXOS}
NR

Nesse caso, veja a função saveFilesByComma da trait AdiantiFileSaveTrait. Ela permite salvar múltiplos arquivos em uma única coluna do banco, separando-os por vírgula.