Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Cache de imagem no upload Estou fazendo um formulário com imagem com base no tutor - ProductForm, porem estou renomeando a foto ao salvar. o formulario está renomeando a foto corretamente e salvando no banco de dados corretamente, porem ao mudar a foto (ele aparece correta), mas quando clico salvar, volta a foto antiga, embora na pasta ja esta a foto nova, no banco tambem fica correto, tenho que dar um f5 para atualizar...
LJ
Cache de imagem no upload  
Fechado
Estou fazendo um formulário com imagem com base no tutor - ProductForm, porem estou renomeando a foto ao salvar.
o formulario está renomeando a foto corretamente e salvando no banco de dados corretamente, porem ao mudar a foto (ele aparece correta), mas quando clico salvar, volta a foto antiga, embora na pasta ja esta a foto nova, no banco tambem fica correto, tenho que dar um f5 para atualizar. como evitar este f5.

  1. <?php
  2. /**
  3.  * CategoriaForm Registration
  4.  */
  5. class CategoriaForm extends TStandardForm
  6. {
  7.     protected $form// form
  8.     private   $frame;
  9.     
  10.     /**
  11.      * Class constructor
  12.      * Creates the page and the registration form
  13.      */
  14.     function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         Usuario::checkLogin();
  19.         
  20.         // creates the form
  21.         $this->form = new TQuickForm('form_Categoria');
  22.         $this->form->class 'tform'// CSS class
  23.         
  24.         // define the form title
  25.         $this->form->setFormTitle('Categoria');
  26.         
  27.         // defines the database
  28.         parent::setDatabase('sample');
  29.         
  30.         // defines the active record
  31.         parent::setActiveRecord('Categoria');
  32.         
  33.         // create the form fields
  34.         1914                             = new TEntry('id');
  35.         $nome                           = new TEntry('nome');
  36.         $dataevento                        = new TDate('dataevento');
  37.         $descricao                      = new THtmlEditor('descricao');
  38.         $imagem                         = new TFile('imagem');
  39.         // add the fields
  40.         $this->form->addQuickField('id'1914,  50);
  41.         $this->form->addQuickField('data'$dataevento,  100);
  42.         $this->form->addQuickField('nome'$nome,  200);
  43.         $this->form->addQuickField('descricao'$descricao,  200);
  44.         $this->form->addQuickField('imagem'$imagem,  200);
  45.         // complete upload action
  46.         $imagem->setCompleteAction(new TAction(array($this'onComplete')));        
  47.         
  48.         
  49.         1914->setEditableFALSE );
  50.         $descricao->setSize(400300);
  51.         $this->frame = new TElement('div');
  52.         $this->frame->id 'photo_frame';
  53.         $this->frame->style 'width:400px;height:auto;min-height:200px;border:1px solid gray;padding:4px;';
  54.         $row $this->form->addRow();
  55.         $row->addCell('');
  56.         $row->addCell($this->frame);
  57.         
  58.         $imagem->setSize(20040);
  59.         // add a form action
  60.         $this->form->addQuickAction(_t('Save'), new TAction(array($this'onSave')), 'ico_save.png');
  61.         $this->form->addQuickAction(_t('New'), new TAction(array($this'onEdit')), 'ico_new.png');
  62.         $this->form->addQuickAction(_t('Back'), new TAction(array('CategoriaList''onReload')), 'ico_back.png');
  63.         
  64.         // add the form to the page
  65.         parent::add($this->form);
  66.     }
  67.         /**
  68.      * On complete upload
  69.      */
  70.     public static function onComplete($param)
  71.     {
  72.         new TMessage('info''Upload completo: '.$param['imagem']);
  73.         
  74.         // refresh photo_frame
  75.         TScript::create("$('#photo_frame').html('')");
  76.         TScript::create("$('#photo_frame').append(\"<img style='width:100%' src='tmp/{$param['imagem']}'>\");");
  77.     }
  78.     
  79.     /**
  80.      * Edit product
  81.      */
  82.     public function onEdit($param)
  83.     {
  84.         $object parent::onEdit($param);
  85.         if ($object)
  86.         {
  87.             $imagem = new TImage($object->imagem);
  88.             $imagem->style 'width: 100%';
  89.             $this->frame->add$imagem );
  90.         }
  91.     }
  92.     
  93.     /**
  94.      * Overloaded method onSave()
  95.      * Executed whenever the user clicks at the save button
  96.      */
  97.     public function onSave()
  98.     {
  99.         // first, use the default onSave()
  100.         $object parent::onSave();
  101.         
  102.         // if the object has been saved
  103.         if ($object instanceof Categoria)
  104.         {
  105.             
  106.             $source_file   'tmp/'.$object->imagem;
  107.             $target_file   'app/images/eventos/cat_' $object->id.substr($object->imagem, -4);
  108.             $finfo         = new finfo(FILEINFO_MIME_TYPE);
  109.             
  110.             // if the user uploaded a source file
  111.             if (file_exists($source_file) AND ($finfo->file($source_file) == 'image/png' OR $finfo->file($source_file) == 'image/jpeg'))
  112.             {
  113.                 // move to the target directory
  114.                 rename($source_file$target_file);
  115.                 try
  116.                 {
  117.                     TTransaction::open($this->database);
  118.                     // update the photo_path
  119.                     $object->imagem $target_file;
  120.                     $object->store();
  121.                     
  122.                     TTransaction::close();
  123.                 }
  124.                 catch (Exception $e// in case of exception
  125.                 {
  126.                     new TMessage('error'$e->getMessage());
  127.                     TTransaction::rollback();
  128.                 }
  129.             }
  130.             $image = new TImage($target_file);
  131.             $image->style 'width: 100%';
  132.             $this->frame->add($image);
  133.             // erro - só atualiza a imagem se der f5
  134.             
  135.         }
  136.     }
  137.     
  138. }
  139. ?>

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


ES

No Final do onSave acrescente a linha:
  1. <?php $this->onReload(func_get_arg(0)); ?>
LJ

Olá Eliezer, obrigado por esta tentativa, mas não funcionou.
LJ

da esse erro:
Fatal error: Call to undefined method CategoriaForm::onReload() in C:wampwwwsuafoto2appcontrolCategoriaForm.class.php on line 145
ES

Significa que vc não definiu esse método e precisa criá-lo para carregar os dados chamar o método inicial que carrega os dados.
ES

Significa que vc não definiu esse método e precisa criá-lo para carregar os dados chamar o método inicial que carrega os dados.
PD

Às vezes pode ser cache do navegador simplesmente.
Quando é usado o mesmo nome de imagem no lado do servidor...