Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problema nas composições com imagem. Boa dia pessoal...Estou fazendo um cadastro de propostas onde eu tenho uma tabela de 'proposta' e outra de 'Proposta_foto', a composição entre os objetos acontece perfeitamente, posso criar, alterar e excluir o abjeto todo e suas partes; porém quando eu salvo o objeto as fotos não são movidas da pasta Temp do Framework para o diretório que eu escolhi e também quando eu excluo um objeto as...
JF
Problema nas composições com imagem.  
Boa dia pessoal...Estou fazendo um cadastro de propostas onde eu tenho uma tabela de 'proposta' e outra de 'Proposta_foto', a composição entre os objetos acontece perfeitamente, posso criar, alterar e excluir o abjeto todo e suas partes; porém quando eu salvo o objeto as fotos não são movidas da pasta Temp do Framework para o diretório que eu escolhi e também quando eu excluo um objeto as fotos não são apagadas da pasta Temp. Vou postar meu código.
Alguém pode me ajudar ?

  1. <?php
  2. $FOTO  = new TFile('FOTO');
  3. ?>


  1. <?php
  2.   public function onSave$param )
  3.   {
  4.         try
  5.         {   
  6.             TTransaction::open('db2'); // open a transaction
  7.             
  8.             $this->form->validate(); // validate form data
  9.             
  10.             $data   $this->form->getData();
  11.             
  12.             $proposta = new proposta;
  13.             $proposta->fromArray( (array) $data);
  14.             
  15.             //PEGA AS COMPOSIÇÕES 'proposta_foto'
  16.             $ts_foto TSession::getValue('TS_foto');
  17.             if ($ts_foto)
  18.             {    
  19.                   foreach($ts_foto as $lista_foto)
  20.                 {
  21.                     $proposta_foto = new proposta_foto;
  22.                         
  23.                     $proposta_foto->FOTO             $lista_foto['FOTO'];
  24.                     $proposta_foto->DESCRICAO $lista_foto['DESCRICAO'];
  25.                         
  26.                     $proposta->addproposta_foto($proposta_foto);
  27.                         
  28.                 }//foreach
  29.             }//$ts_foto
  30.             
  31.             
  32.             $proposta->CORRETOR  $data->CODIGO;
  33.             $proposta->USER_ID   1//TSession::getValue('userid');    
  34.             $proposta->USER_NAME 'Admin' ;//TSession::getValue('username');    
  35.             $proposta->store();
  36.             
  37.             //copy file to target folder
  38.             //$this->saveFile($proposta_foto, $data, 'FOTO', 'files/images');
  39.             $this->saveFile($proposta$data'FOTO''files/images');
  40.             
  41.             $this->form->setData($data); 
  42.             TTransaction::close(); // close the transaction
  43.             
  44.            new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  45.         }//try
  46.         catch(Exception $e
  47.         {
  48.             new TMessage('error'$e->getMessage());
  49.             $this->form->setData$this->form->getData() );
  50.             TTransaction::rollback(); // undo all pending operations
  51.         }
  52.         
  53.     }//onSave
  54. ?>



  1. <?php
  2. class proposta Extends TRecord
  3. {    
  4.     const TABLENAME  'PROPOSTA';
  5.     const PRIMARYKEY 'ID_PROPOSTA';
  6.     const IDPOLICY   'max';
  7.     
  8.     private $proposta_foto;
  9.     private $nome_corretor;
  10.     
  11.     public function __construct($ID_PROPOSTA NULL)
  12.     {
  13.         parent::__construct($ID_PROPOSTA);
  14.         
  15.         parent::addAttribute('CORRETOR');//FK FORNECEDOR
  16.         parent::addAttribute('FUNCIONARIO');
  17.         parent::addAttribute('DESCRICAO');
  18.         parent::addAttribute('FOTO');
  19.         parent::addAttribute('NOME');
  20.         parent::addAttribute('CPF');
  21.         parent::addAttribute('STATUS');
  22.         parent::addAttribute('USER_ID');
  23.         parent::addAttribute('USER_NAME');
  24.         
  25.     }//function __construct
  26.     
  27.     public function load($ID_PROPOSTA)
  28.     {
  29.         $this->proposta_foto  parent::loadComposite('proposta_foto',  'PROPOSTA_ID'$ID_PROPOSTA);
  30.         
  31.         return parent::load($ID_PROPOSTA);
  32.         
  33.     }//load
  34.     
  35.     public function store()
  36.     {
  37.         parent::store();
  38.        
  39.         //composição entre proposta e proposta_foto
  40.                         //tabela relacional ,  FK            , id do obj          , vetor   
  41.         parent::saveComposite('proposta_foto',  'PROPOSTA_ID'$this->ID_PROPOSTA$this->proposta_foto);
  42.         
  43.     }//function store
  44.     
  45.     public function delete($ID_PROPOSTA NULL)
  46.     {
  47.         $ID_PROPOSTA = isset($ID_PROPOSTA) ? $ID_PROPOSTA$this->ID_PROPOSTA;
  48.        
  49.         parent::deleteComposite('proposta_foto''PROPOSTA_ID'$ID_PROPOSTA);
  50.         parent::delete$ID_PROPOSTA );
  51.         
  52.     }//function delete
  53.     
  54.     /*
  55.     Add os 'proposta_foto's no array @$this->proposta_foto 
  56.     */
  57.     public function addproposta_foto(proposta_foto $object)
  58.     {
  59.         $this->proposta_foto[] = $object;
  60.         
  61.     }//addproposta_foto
  62.     
  63.     /*
  64.     retorna os 'proposta_foto' em forma de array
  65.     */
  66.     public function getproposta_foto()
  67.     {
  68.         return $this->proposta_foto;
  69.         
  70.     }//getproposta_foto
  71.     
  72.     /*
  73.     retorna o nome do corretor
  74.     */
  75.     public function get_nome_corretor()
  76.     {
  77.         if(empty($this->nome_corretor))
  78.         {
  79.             $this->nome_corretor = new fornecedor($this->CORRETOR);//FK
  80.         }
  81.         return $this->nome_corretor;    
  82.         
  83.     }//get_nome_corretor
  84.     
  85. }//TRecord
  86. ?>



  1. <?php
  2. class proposta_foto Extends TRecord
  3. {    
  4.     const TABLENAME  'PROPOSTA_FOTO';
  5.     const PRIMARYKEY 'ID_PROPOSTA_FOTO';
  6.     const IDPOLICY   'max';
  7.     
  8.     public function __construct($ID_PROPOSTA_FOTO NULL)
  9.     {
  10.         parent::__construct($ID_PROPOSTA_FOTO);
  11.         
  12.         parent::addAttribute('PROPOSTA_ID');//FK PROPOSTA
  13.         parent::addAttribute('FOTO');
  14.         parent::addAttribute('DESCRICAO');
  15.         
  16.     }//function __construct
  17.     
  18. }//TRecord
  19. ?>

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


JF

  1. <?php
  2. public function addFoto($param)
  3.     {
  4.         try
  5.         {
  6.             $data $this->form->getData();
  7.             
  8.             if(empty($data->ID_FOTO))
  9.             {
  10.                 $data->ID_FOTO 1;
  11.             }
  12.             
  13.             
  14.             $ts_foto TSession::getValue('TS_foto');
  15.             
  16.             //Da uma ID para foto
  17.             $key = (int) $data->ID_FOTO;//campo oculto
  18.             
  19.             //add no array
  20.             $ts_foto[$key] = array(            'FOTO'             => $data->FOTO,
  21.                                     'ID_FOTO'       => $data->ID_FOTO,
  22.                                     'DESCRICAO' => $data->DESCRICAO
  23.                                    );  
  24.             //Limpa os campos
  25.             $obj = new STDClass;
  26.             $obj->DESCRICAO =  ''
  27.             $obj->FOTO            =  ''
  28.                 
  29.             TForm::sendData('formProposta'$obj);
  30.             
  31.             $this->form->setData($data);
  32.             
  33.             //grava 
  34.             TSession::setValue('TS_data'$data);
  35.             TSession::setValue('TS_foto'$ts_foto);
  36.             
  37.             //recarrega a página 
  38.             $this->onReload($param); 
  39.             
  40.         }//try
  41.         catch( Exception $e)
  42.         {
  43.             new TMessage('error'$e->getMessage() );
  44.             TTransaction::rollback();
  45.         }
  46.         
  47.     }//addFoto
  48. ?>
NR

Você está usando master/detail? A função saveFile não está preparada para esse tipo de formulário. Você vai ter que adaptar
JF

Sim estou usando como base o master/detail, adicionando as imagens em uma variável de sessão e salvando pelo método addproposta_foto...teria algum exemplo desta adaptação, tenho pouca experiência com programação não tenho ideia como adaptar a função saveFile. Alguém pode dar dicas de como fazer isso ?
JF

A imagem(obj parte) esta vinculada ao obj todo, ele grava no banco o endereço da imagem, trás a imagem certa porém não move a imagem da pasta Temp e não excluir após deletar o obj todo...imagino q não seja tão complexo de resolver para quem já tem mais experiência.
NR

Dá uma olhada na função saveFile. Lá tem todos os comandos para mover o arquivo.

Único detalhe é que você vai ter que fazer isso dentro do foreach, pois cada imagem precisa desse tratamento.
JF

Sim eu tava tentando adaptar a função nativa do php move_uploaded_file dentro do foreach no addproposta_foto, vou tentar fazer isso, a função saveFile é de qual classe, onde eu encontro ela ?
JF

Já achei, vou tentar adaptar...depois eu falo se deu certo ou não. Valeu Nataniel.