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

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


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