A
TMultiFile não está salvando o caminho das imagens no banco
- <?php
- /**
- * ProntuarioobrigatorioForm Master/Detail
- * @author <your name here>
- */
- class ProntuarioobrigatorioForm extends TPage
- {
- protected $form; // form
- protected $detail_list;
- /**
- * Page constructor
- */
- public function __construct()
- {
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_Prontuarioobrigatorio');
- $this->form->setFormTitle('Prontuario Obrigatório');
- // master fields
- //buscar paciente
- $COD_PAC = new ">TDBSeekButton('COD_PAC', 'banco', $this->form->getName(),'Paciente', 'NOME_PAC');
- $NOME_PACIENTE = new TEntry('NOME_PACIENTE');
- $COD_PAC->setDisplayLabel('PACIENTE');
- $COD_PAC->setAuxiliar($NOME_PACIENTE);
- //formatacao BUSCAR paciente
- $NOME_PACIENTE->setEditable(FALSE);
- $COD_PAC->setSize(80);
- $NOME_PACIENTE->setSize('calc(100% - 105px)');
- $NOME_PACIENTE->style .= ';margin-left:3px';
- $NOME_PAC = new THidden('NOME_PAC');
- $CID = new TEntry('CID');
- $AVAL_DEMANDA = new THtmlEditor('AVAL_DEMANDA');
- $OBJ_TRATAMENTO = new THtmlEditor('OBJ_TRATAMENTO');
- $REG_ENCAMINHAMENTO = new THtmlEditor('REG_ENCAMINHAMENTO');
- $REG_ENCERRAMENTO = new THtmlEditor('REG_ENCERRAMENTO');
- $ANEXOS = new TMultiFile('ANEXOS');
- $COD_PAC->setExitAction(new TAction(array($this, 'onExitActionPac')));
- // detail fields
- $detail_uniqid = new THidden('detail_uniqid');
- $detail_ID = new THidden('detail_ID');
- $detail_DATA_EVOLUCAO = new TDate('detail_DATA_EVOLUCAO');
- $detail_OBS_EVOLUCAO = new THtmlEditor('detail_OBS_EVOLUCAO');
- // master fields
- $this->form->addFields( [new TLabel('Paciente')], [$COD_PAC] );
- $this->form->addFields( [new TLabel('CID')], [$CID] );
- $this->form->addFields( [new THidden('NOME')], [$NOME_PAC] );
- $this->form->addFields( [new TLabel('Avaliação Demanda')], [$AVAL_DEMANDA] );
- $this->form->addFields( [new TLabel('Objetivo Tratamento')], [$OBJ_TRATAMENTO] );
- $this->form->addFields( [new TLabel('Registro Encaminhamento')], [$REG_ENCAMINHAMENTO] );
- $this->form->addFields( [new TLabel('Registro Encerramento')], [$REG_ENCERRAMENTO] );
- $this->form->addFields( [new TLabel('Anexos')], [$ANEXOS] );
- $AVAL_DEMANDA->setSize('100%',100);
- $OBJ_TRATAMENTO->setSize('100%',100);
- $REG_ENCAMINHAMENTO->setSize('100%',100);
- $REG_ENCERRAMENTO->setSize('100%',100);
- $CID->setValue("10/DSM5");
- //formatacao upload de imagem
- $ANEXOS->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg', 'pdf','docx'] );
- $ANEXOS->enableFileHandling();
- $ANEXOS->enablePopover();
- // detail fields
- $this->form->addContent( ['<h4>Registro de Evolução</h4><hr>'] );
- $this->form->addFields( [$detail_uniqid] );
- $this->form->addFields( [$detail_ID] );
- $this->form->addFields( [new TLabel('Data Evolucao')], [$detail_DATA_EVOLUCAO] );
- $this->form->addFields( [new TLabel('Obs Evolucao')], [$detail_OBS_EVOLUCAO] );
- //formatacao datas
- $detail_DATA_EVOLUCAO->setMask('dd/mm/yyyy');
- $detail_DATA_EVOLUCAO->setDatabaseMask('yyyy-mm-dd');
- $detail_OBS_EVOLUCAO->setSize('100%',100);
- $add = TButton::create('add', [$this, 'onDetailAdd'], 'Registrar', 'fa:plus-circle green');
- $add->getAction()->setParameter('static','1');
- $this->form->addFields( [], [$add] );
- $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
- $this->detail_list->setId('Registroevolucao_list');
- $this->detail_list->generateHiddenFields();
- $this->detail_list->style = "min-width: 700px; width:100%;margin-bottom: 10px";
- $evolu = new TDataGridColumn('DATA_EVOLUCAO', 'Data da evolução', 'left', 10);
- $criteria = new TCriteria;
- $criteria->setProperty('order', 'DATA_EVOLUCAO');
- $criteria->setProperty('direction', 'asc');
- // items
- $this->detail_list->addColumn( new TDataGridColumn('uniqid', 'Uniqid', 'center') )->setVisibility(false);
- $this->detail_list->addColumn( new TDataGridColumn('ID', 'Id', 'center') )->setVisibility(false);
- $this->detail_list->addColumn( $evolu)->setTransformer(function($value, $object, $row)
- {
- if($value)
- {
- $date = new DateTime($value);
- return $date->format("d/m/Y");
- }
- });
- $this->detail_list->addColumn( new TDataGridColumn('OBS_EVOLUCAO', 'Observação da evolução', 'left', 100) );
- //$DATA_EVOLUCAO->setAction(new TAction([$this, 'onReload']), ['order' => 'DATA_EVOLUCAO']);
- $this->detail_list->disableHtmlConversion();
- // detail actions
- $action1 = new TDataGridAction([$this, 'onDetailEdit'] );
- $action1->setFields( ['uniqid', '*'] );
- $action2 = new TDataGridAction([$this, 'onDetailDelete']);
- $action2->setField('uniqid');
- // add the actions to the datagrid
- $this->detail_list->addAction($action1, _t('Edit'), 'fa:edit blue');
- $this->detail_list->addAction($action2, _t('Delete'), 'far:trash-alt red');
- $this->detail_list->createModel();
- $panel = new TPanelGroup;
- $panel->add($this->detail_list);
- $panel->getBody()->style = 'overflow-x:auto';
- $this->form->addContent( [$panel] );
- $this->form->addAction( 'Salvar', new TAction([$this, 'onSave'], ['static'=>'1']), 'fa:save green');
- $this->form->addAction( 'Limpar', new TAction([$this, 'onClear']), 'fa:eraser red');
- $this->form->addHeaderAction( 'Salvar até aqui', new TAction([$this, 'onSave']), 'fa:save green' );
- // create the page container
- $container = new TVBox;
- $container->style = 'width: 100%';
- $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- parent::add($container);
- }
- /**
- * Clear form
- * @param $param URL parameters
- */
- public function onClear($param)
- {
- $this->form->clear(TRUE);
- }
- /**
- * Load Master/Detail data from database to form
- */
- public function onEdit($param)
- {
- try
- {
- TTransaction::open('banco');
- if (isset($param['key']))
- {
- $key = $param['key'];
- $object = new Prontuarioobrigatorio($key);
- //$object->ANEXOS = Prontuarioobrigatorio::where('COD_PAC', '=', $param['key'])->getIndexedArray('id', 'image');
- $items = Registroevolucao::where('COD_PAC', '=', $key)->load();
- foreach( $items as $item )
- {
- $item->uniqid = uniqid();
- $row = $this->detail_list->addItem( $item );
- $row->id = $item->uniqid;
- }
- $this->form->setData($object);
- TTransaction::close();
- }
- else
- {
- $this->form->clear(TRUE);
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- /**
- * Save the Master/Detail data from form to database
- */
- public function onSave($param)
- {
- try
- {
- // open a transaction with database
- TTransaction::open('banco');
- $file = "";
- if (!empty($param['ANEXOS']))
- {
- $file = json_decode(urldecode($param['ANEXOS']))->fileName;
- }
- $data = $this->form->getData();
- $this->form->validate();
- $master = new Prontuarioobrigatorio;
- $master->fromArray( (array) $data);
- $master->ANEXOS = $file;
- $master->store();
- $this->form->saveFiles($master, $data, 'ANEXOS', 'files/images');
- Registroevolucao::where('COD_PAC', '=', $master->COD_PAC)->delete();
- if( $param['Registroevolucao_list_DATA_EVOLUCAO'] )
- {
- foreach( $param['Registroevolucao_list_DATA_EVOLUCAO'] as $key => $item_id )
- {
- $detail = new Registroevolucao;
- $detail->DATA_EVOLUCAO = $param['Registroevolucao_list_DATA_EVOLUCAO'][$key];
- $detail->OBS_EVOLUCAO = $param['Registroevolucao_list_OBS_EVOLUCAO'][$key];
- $detail->COD_PAC = $master->COD_PAC;
- $detail->store();
- }
- }
- TTransaction::close(); // close the transaction
- TForm::sendData('form_Prontuarioobrigatorio', (object) ['id' => $master->COD_PAC]);
- new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback();
- }
- }
- }
- ?>
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.
Eu preciso anexar varios arquivos mesmo, como posso pegar esse array?
Você tem uma tabela relacionada para gravar os arquivos?
é gravado na mesma tabela do formulario
Prontuario{COD_PAC, NOME_PAC, CID, AVAL_DEMANDA, OBJ_TRATAMENTO, REG_ENCAMINHAMENTO, REG_ENCERRAMENTO, ANEXOS}
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.