Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Preview de Imagens Boa noite, comunidade. Utilizei o exemplo do ProductForm (http://www.adianti.com.br/framework_files/tutor/index.php?class=ProductForm&method=onEdit) para fazer o preview da imagem antes de salvar. Entretanto, a imagem não aparece para visualização. Alguém consegue identificar qual o problema? ...
RC
Preview de Imagens  
Boa noite, comunidade.
Utilizei o exemplo do ProductForm (www.adianti.com.br/framework_files/tutor/index.php?class=ProductForm) para fazer o preview da imagem antes de salvar.
Entretanto, a imagem não aparece para visualização.
Alguém consegue identificar qual o problema?

  1. <?php
  2. /**
  3.  * SocioForm Form
  4.  * @author  <your name here>
  5.  */
  6. class SocioForm extends TPage
  7. {
  8.     protected $form// form
  9.     private   $frame;
  10.     
  11.     /**
  12.      * Form constructor
  13.      * @param $param Request
  14.      */
  15.     public function __construct$param )
  16.     {
  17.         parent::__construct();
  18.         
  19.         // creates the form
  20.         $this->form = new TForm('form_Socio');
  21.         $this->form->class 'tform'// change CSS class
  22.         //$this->form = new BootstrapFormWrapper($this->form);
  23.         $this->form->style 'display: table;width:100%'// change style
  24.         
  25.         $notebook1     = new BootstrapNotebookWrapper( new TNotebook(500460) ); 
  26.         $this->form->add($notebook1);           
  27.         
  28.         // create the form fields
  29.         $id = new TEntry('id');
  30.         $id->setEditable(FALSE);
  31.         $id->setSize(100);
  32.         
  33.         $nome = new TEntry('nome');
  34.         $nome->setSize('100%');
  35.         $nome->addValidation('nome', new TRequiredValidator); 
  36.         
  37.         $cpf = new TEntry('cpf');
  38.         $cpf->addValidation('cpf', new TCPFValidator); 
  39.         $cpf->setMask('999.999.999-99');
  40.         $cpf->setSize(200);
  41.         
  42.         $rg = new TEntry('rg');
  43.         $rg->setSize(200);
  44.         
  45.         $data_nascimento = new TDate('data_nascimento');
  46.         $data_nascimento->setMask('dd/mm/yyyy');
  47.         $data_nascimento->setSize(178);
  48.         
  49.         $cadastrado = new TDate('cadastrado');
  50.         $cadastrado->setEditable(FALSE);
  51.         $cadastrado->setSize(200);
  52.         
  53.         $pai = new TEntry('pai');
  54.         $pai->setSize('100%');
  55.         
  56.         $mae = new TEntry('mae');
  57.         $mae->setSize('100%');
  58.         
  59.         $ativo = new TEntry('ativo');
  60.         $ativo->setEditable(FALSE);
  61.         $ativo->setSize(200);
  62.         
  63.         $sexo_id = new TDBRadioGroup('sexo_id''sistema''Sexo''id''descricao');
  64.         $sexo_id->setLayout('horizontal');        
  65.         
  66.         $estado_civil_id = new TDBCombo('estado_civil_id''sistema''EstadoCivil''id''descricao');
  67.         $estado_civil_id->setSize(200);
  68.         
  69.         $cidade_nascimento_id = new  ">TDBSeekButton('cidade_nascimento_id''sistema''form_Socio''Cidade''nome''cidade_nascimento_id''cidade_nascimento_nome');
  70.         $cidade_nascimento_id->setSize(30);
  71.         $cidade_nascimento_nome = new TEntry('cidade_nascimento_nome');  
  72.         $cidade_nascimento_nome->setEditable(FALSE); 
  73.         $cidade_nascimento_nome->setSize(146);
  74.         
  75.         $email = new TEntry('email');   
  76.         $email->addValidation('email', new TEmailValidator);  
  77.         $email->setSize('100%');
  78.         
  79.         $matricula = new TEntry('matricula');
  80.         $matricula->addValidation('matricula', new TNumericValidator);
  81.         $matricula->setSize(200);
  82.         
  83.         $ade = new TEntry('ade');            
  84.         $ade->setSize(200);    
  85.         
  86.         $data_admissao = new TDate('data_admissao');
  87.         $data_admissao->setMask('dd/mm/yyyy');
  88.         $data_admissao->setSize(178);                
  89.                 
  90.         $cargo_funcao_id = new TDBCombo('cargo_funcao_id''sistema''CargoFuncao''id''descricao');          
  91.         $cargo_funcao_id->setSize(200); 
  92.         
  93.         $departamento_id = new  ">TDBSeekButton('departamento_id''sistema''form_Socio''Departamento''sigla''departamento_id''departamento_sigla');                   
  94.         $departamento_id->setSize(30);
  95.         $departamento_sigla = new TEntry('departamento_sigla');  
  96.         $departamento_sigla->setEditable(FALSE); 
  97.         $departamento_sigla->setSize(146);         
  98.                    
  99.        
  100.        
  101.         //prepara a tabela de dados pessoais 
  102.         $pessoais = new TTable;          
  103.         //$pessoais->border = '1';      
  104.         $row $pessoais->addRow()->addCell(new TLabel(''))->width 80;
  105.         
  106.         $row $pessoais->addRow();
  107.         $row->addCell(new TLabel('Id'));
  108.         $row->addCell($id)->colspan 3;
  109.         $row $pessoais->addRow();
  110.         $row->addCell(new TLabel('Nome'));
  111.         $row->addCell($nome)->colspan 3;
  112.         $row $pessoais->addRow();
  113.         $row->addCell(new TLabel('Mãe'));
  114.         $row->addCell($mae)->colspan 3;
  115.         $row $pessoais->addRow();
  116.         $row->addCell(new TLabel('Pai'));
  117.         $row->addCell($pai)->colspan 3;
  118.         $row $pessoais->addRow();
  119.         $row->addCell(new TLabel('E-mail'));
  120.         $row->addCell($email)->colspan 3;                
  121.                 
  122.         $pessoais->addRowSet( new TLabel(''));
  123.         
  124.         $row $pessoais->addRow();             
  125.         $row->addCell(new TLabel(''));
  126.         $row->addCell(new TLabel('CPF'))->width 250;        
  127.         $row->addCell(new TLabel('Identidade'))->colspan 2;
  128.         $row $pessoais->addRow();
  129.         $row->addCell(new TLabel(''));
  130.         $row->addCell($cpf);
  131.         $row->addCell($rg)->colspan 2;
  132.         
  133.         $row $pessoais->addRow();
  134.         $row->addCell(new TLabel(''));
  135.         $row->addCell(new TLabel('Data de Nascimento'));        
  136.         $row->addCell(new TLabel('Cidade de Nascimento'))->colspan 2;
  137.         $row $pessoais->addRow();
  138.         $row->addCell(new TLabel(''));
  139.         $row->addCell($data_nascimento);
  140.         $row->addCell($cidade_nascimento_id);
  141.         $row->addCell($cidade_nascimento_nome);
  142.         
  143.         $row $pessoais->addRow();
  144.         $row->addCell(new TLabel(''));
  145.         $row->addCell(new TLabel('Estado Civil'));        
  146.         $row->addCell(new TLabel('Sexo'))->colspan 2;
  147.         $row $pessoais->addRow();
  148.         $row->addCell(new TLabel(''));
  149.         $row->addCell($estado_civil_id);        
  150.         $row->addCell($sexo_id)->colspan 2;
  151.                
  152.         $row $pessoais->addRow();
  153.         $row->addCell(new TLabel(''));
  154.         $row->addCell(new TLabel('Situacao'));        
  155.         $row->addCell(new TLabel('Data de Cadastro'))->colspan 2;
  156.         $row $pessoais->addRow();
  157.         $row->addCell(new TLabel(''));
  158.         $row->addCell($ativo);        
  159.         $row->addCell($cadastrado)->colspan 2;
  160.         
  161.         
  162.         
  163.         //prepara a tabela de dados profissionais 
  164.         $profissional = new TTable;  
  165.         //$profissional->border = '1'; 
  166.         $profissional->addRowSet( new TLabel(''));
  167.         
  168.         $row $profissional->addRow();                
  169.         $row->addCell(new TLabel('Matrícula'))->colspan 2;       
  170.         $row->addCell(new TLabel('Data de Admissão'));
  171.         $row $profissional->addRow();        
  172.         $row->addCell($matricula)->colspan 2;
  173.         $row->addCell($data_admissao);
  174.         
  175.         $row $profissional->addRow();        
  176.         $row->addCell(new TLabel('ADE'))->colspan 2;        
  177.         $row->addCell(new TLabel('Cargo/Função'));
  178.         $row $profissional->addRow();        
  179.         $row->addCell($ade)->colspan 2;
  180.         $row->addCell($cargo_funcao_id);
  181.        
  182.         $row $profissional->addRow();        
  183.         $row->addCell(new TLabel('Lotação'))->colspan 2;                
  184.         $row $profissional->addRow();        
  185.         $row->addCell($departamento_id);        
  186.         $row->addCell($departamento_sigla)->width 200;
  187.                      
  188.       
  189.       
  190.               
  191.         //prepara a tabela de endereco
  192.         $endereco_id = new TEntry('endereco_id');
  193.         
  194.         $endereco = new TTable;  
  195.         //$endereco->border = '1'; 
  196.         $endereco->addRowSet( new TLabel(''));
  197.           
  198.         $cep = new TEntry('cep');              
  199.         $cep->setMask('99.999-999');
  200.         $cep->setSize(100);
  201.         $busca_cep = new TAction( array($this'onBuscaCEP') );
  202.         $cep->setExitAction($busca_cep);
  203.                 
  204.         $estado_id = new TEntry('estado_id');
  205.         $estado_id->setEditable(FALSE);
  206.         $estado_id->setSize(200);        
  207.                 
  208.         $cidade_id = new TEntry('cidade_id');
  209.         $cidade_id->setEditable(FALSE);
  210.         $cidade_id->setSize(200);
  211.                 
  212.         $bairro_id = new TEntry('bairro_id');
  213.         $bairro_id->setEditable(FALSE);
  214.         $bairro_id->setSize(200);
  215.         
  216.         $logradouro_id  = new TEntry('logradouro_id');
  217.         $logradouro_id->setSize(450);
  218.         
  219.         $numero      = new TEntry('numero');
  220.         $numero->setSize(200);
  221.         
  222.         $complemento = new TEntry('complemento');
  223.         $complemento->setSize(200);    
  224.         
  225.         $ponto_referencia = new TText('ponto_referencia');
  226.         $ponto_referencia->setSize(45070);    
  227.         
  228.         $row $endereco->addRow();                
  229.         $row->addCell(new TLabel('CEP'))->colspan 2;       
  230.         $row->addCell(new TLabel('Estado'));
  231.         $row $endereco->addRow();        
  232.         $row->addCell($cep)->colspan 2;
  233.         $row->addCell($estado_id);
  234.         
  235.         $row $endereco->addRow();        
  236.         $row->addCell(new TLabel('Cidade'))->colspan 2;        
  237.         $row->addCell(new TLabel('Bairro'));
  238.         $row $endereco->addRow();        
  239.         $row->addCell($cidade_id)->colspan 2;
  240.         $row->addCell($bairro_id);
  241.         
  242.         $row $endereco->addRow();        
  243.         $row->addCell(new TLabel('Logradouro'))->colspan 3;                
  244.         $row $endereco->addRow();        
  245.         $row->addCell($logradouro_id)->colspan 3;        
  246.        
  247.         $row $endereco->addRow();        
  248.         $row->addCell(new TLabel('Número'))->colspan 2;        
  249.         $row->addCell(new TLabel('Complemento'));
  250.         $row $endereco->addRow();        
  251.         $row->addCell($numero)->colspan 2;
  252.         $row->addCell($complemento);  
  253.         
  254.         $row $endereco->addRow();        
  255.         $row->addCell(new TLabel('Ponto de Referência'))->colspan 3;                
  256.         $row $endereco->addRow(); 
  257.         $cell $row->addCell(''); 
  258.         $cell->width 500;    
  259.         $cell->colspan 3;  
  260.         $cell->add($ponto_referencia);   
  261.                      
  262.         
  263.         
  264.         
  265.         //montando o TMultiField de telefones                       
  266.         $telefones          = new TMultiField('telefones'); 
  267.         $telefones->setHeight(160);                  
  268.         $telefones->setOrientation('horizontal');           
  269.         
  270.         $ddd            = new TEntry('ddd');
  271.         $ddd->setSize(70);
  272.         $ddd->setMaxLength(2);
  273.         
  274.         $numero         = new TEntry('numero');
  275.         $numero->setSize(150);
  276.         
  277.         $telefones->addField('ddd''DDD'$ddd70);
  278.         $telefones->addField('numero''Numero'$numero150TRUE);
  279.         
  280.         //$operadora_id     = new TDBCombo('operadora_id', 'sistema', 'Operadora', 'id', 'nome');
  281.         //$operadora_id->setLayout('horizontal');
  282.         $operadora     = new TComboCombined('operadora_id''operadora_nome');
  283.         $operadora->setSize(150);
  284.         
  285.         try
  286.         {
  287.             TTransaction::open('sistema');
  288.             $items Operadora::getObjects();
  289.     
  290.             $array = [];        
  291.             foreach ($items as $item)
  292.             {
  293.                 $array[$item->id] = $item->nome;
  294.             }
  295.             
  296.             $operadora->addItems$array );     
  297.             $telefones->addField('operadora''Operadora',  $operadora174);
  298.             TTransaction::close();
  299.         }
  300.         catch (Exception $e)
  301.         {
  302.             new TMessage('error'$e->getMessage());
  303.         }
  304.         
  305.         
  306.         
  307.         //prepara a tabela de foto
  308.         $table_foto = new TTable;  
  309.         //$table_foto->border = '1'; 
  310.         $table_foto->addRowSet( new TLabel(''));
  311.         
  312.         $foto = new TFile('foto'); 
  313.         $foto->setSize(350); 
  314.         // complete upload action
  315.         $foto->setCompleteAction(new TAction(array($this'onComplete')));
  316.                    
  317.         $table_foto->addRowSet(new TLabel('Selecione a Foto do Sócio'));  
  318.         $table_foto->addRowSet($foto); 
  319.         
  320.         $this->frame = new TElement('div');
  321.         $this->frame->id 'photo_frame';
  322.         $this->frame->style 'width:400px; height:auto; min-height:200px; border:1px solid gray; padding:4px;';
  323.         $table_foto->addRowSet($this->frame);
  324.                         
  325.         
  326.         
  327.         
  328.         
  329.         //montando o TMultiField de dependentes                       
  330.         $dependentes          = new TMultiField('dependentes'); 
  331.         $dependentes->setHeight(200);                  
  332.         //$dependentes->setOrientation('horizontal');           
  333.         
  334.         $dependente_nome            = new TEntry('dependente_nome');
  335.         $dependente_nome->setSize(350);
  336.         
  337.         $dependente_cpf = new TEntry('dependente_cpf');
  338.         $dependente_cpf->addValidation('dependente_cpf', new TCPFValidator); 
  339.         $dependente_cpf->setMask('999.999.999-99');
  340.         $dependente_cpf->setSize(200);
  341.         
  342.         $dependente_rg = new TEntry('dependente_rg');
  343.         $dependente_rg->setSize(200);
  344.         
  345.         $dependente_data_nascimento = new TDate('dependente_data_nascimento');
  346.         $dependente_data_nascimento->setMask('dd/mm/yyyy');
  347.         $dependente_data_nascimento->setSize(178);
  348.         
  349.         $dependentes->addField('dependente_nome''Nome'$dependente_nome300TRUE);
  350.         $dependentes->addField('dependente_data_nascimento''Data de Nascimento'$dependente_data_nascimento80TRUE);
  351.         $dependentes->addField('dependente_cpf''CPF'$dependente_cpf120);
  352.         $dependentes->addField('dependente_rg''Identidade'$dependente_rg150);        
  353.                 
  354.         $parentesco     = new TComboCombined('parentesco_id''parentesco_nome');
  355.         $parentesco->setSize(120);
  356.         
  357.         try
  358.         {
  359.             TTransaction::open('sistema');
  360.             $items Parentesco::getObjects();
  361.     
  362.             $array = [];        
  363.             foreach ($items as $item)
  364.             {
  365.                 $array[$item->id] = $item->descricao;
  366.             }
  367.             
  368.             $parentesco->addItems$array );     
  369.             $dependentes->addField('parentesco''Parentesco',  $parentesco174);
  370.             TTransaction::close();
  371.         }
  372.         catch (Exception $e)
  373.         {
  374.             new TMessage('error'$e->getMessage());
  375.         }
  376.                 
  377.                        
  378.                         
  379.         $notebook1->appendPage('Dados Pessoais'$pessoais);
  380.         $notebook1->appendPage('Dados Profissionais'$profissional);
  381.         $notebook1->appendPage('Endereço'$endereco);
  382.         $notebook1->appendPage('Telefones'$telefones);
  383.         $notebook1->appendPage('Foto'$table_foto);  
  384.         $notebook1->appendPage('Dependentes'$dependentes);   
  385.          
  386.         // create the form actions
  387.         /*
  388.         $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
  389.         $this->form->addQuickAction(_t('New'),  new TAction(array($this, 'onClear')), 'bs:plus-sign green');
  390.         */
  391.         
  392.         $button TButton::create('save', array($this'onSave'), 'Save''fa:save');
  393.         
  394.         $this->form->setFields( array($id$nome$cpf$rg$data_nascimento$cadastrado
  395.                                  $pai$mae$ativo$sexo_id$estado_civil_id$cidade_nascimento_id
  396.                                  $cidade_nascimento_nome$email$matricula$ade$data_admissao$foto
  397.                                  $departamento_id$cargo_funcao_id$endereco_id$telefones
  398.                                  $cep$estado_id$cidade_id$bairro_id$logradouro_id$numero,
  399.                                  $complemento$ponto_referencia) ); 
  400.         $this->form->addField($button);
  401.         
  402.         $buttons_box = new TVBox;
  403.         $buttons_box->add($button);
  404.         
  405.         // add a row for the form action
  406.         $botoes = new TTable;  
  407.         $botoes->border '1';
  408.         $row $botoes->addRow();
  409.         $row->class 'tformaction'// CSS class
  410.         $row->addCell($buttons_box)->colspan 2;
  411.         
  412.         // vertical box container
  413.         $container = new TVBox;
  414.         $container->style 'width: 90%';
  415.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));        
  416.         $container->add(TPanelGroup::pack('Cadastro de Sócio'$this->form));
  417.         
  418.         parent::add($container);
  419.         parent::add($botoes);
  420.         /*
  421.         $botoes = new TTable;   
  422.         $botoes->width = '90%';      
  423.         //$botoes->border = '1';         
  424.         $row = $botoes->addRow(); 
  425.         $cell = $row->addCell($button);         
  426.         $cell->class = 'formaction';  
  427.         parent::add($botoes);*/
  428.     }
  429.     
  430.     
  431.     
  432.     /**
  433.      * On complete upload
  434.      */
  435.     public static function onComplete($param)
  436.     {
  437.         new TMessage('info''Carregamento Completo: '.$param['foto']);
  438.       
  439.         // refresh photo_frame
  440.         TScript::create("$('#photo_frame').html('')");
  441.         TScript::create("$('#photo_frame').append(\\"<img style='width:100%' src='tmp/{$param['foto']}'>\\");");                        
  442.     }
  443.     
  444.     
  445.     /**
  446.      * method onBuscaCEP($param)
  447.      * Executado quando sair do campo $cep
  448.      * Busca o endereco conforme o cep informado, para preencher os demais campos do endereco
  449.      */
  450.     public static function onBuscaCEP($param
  451.     {
  452.         //$obj  = new StdClass;
  453.         $obj $this->form->getData('Endereco'); 
  454.            //$data = new PCepProgs($param['cep']);
  455.         //$data = new PCepProgs('51350250');
  456. print_r($obj);die;                
  457.         $obj->logradouro $data->getRua();
  458.         $obj->cidade     $data->getCidade();
  459.         $obj->bairro     $data->getBairro();;
  460.         $obj->estado_id  $data->getUf();; 
  461.         //TForm::sendData('form_Clientes', $obj);
  462.         $this->form->setData($obj);  
  463.     }
  464.     
  465.     
  466.     /**
  467.      * Save form data
  468.      * @param $param Request
  469.      */
  470.     public function onSave$param )
  471.     {
  472.         try
  473.         {
  474.             TTransaction::open('sistema'); // open a transaction
  475.             
  476.             /**
  477.             // Enable Debug logger for SQL operations inside the transaction
  478.             TTransaction::setLogger(new TLoggerSTD); // standard output
  479.             TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
  480.             **/
  481.             
  482.             $this->form->validate(); // validate form data
  483.             
  484.             $object = new Socio;  // create an empty object
  485.             $data $this->form->getData(); // get form data as array
  486.             $object->fromArray( (array) $data); // load the object with data
  487.             $object->store(); // save the object
  488.             
  489.             // get the generated id
  490.             $data->id $object->id;
  491.             
  492.             $this->form->setData($data); // fill form data
  493.             TTransaction::close(); // close the transaction
  494.             
  495.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  496.         }
  497.         catch (Exception $e// in case of exception
  498.         {
  499.             new TMessage('error'$e->getMessage()); // shows the exception error message
  500.             $this->form->setData$this->form->getData() ); // keep form data
  501.             TTransaction::rollback(); // undo all pending operations
  502.         }
  503.     }
  504.     
  505.     /**
  506.      * Clear form data
  507.      * @param $param Request
  508.      */
  509.     public function onClear$param )
  510.     {
  511.         $this->form->clear();
  512.     }
  513.     
  514.     /**
  515.      * Load object to form data
  516.      * @param $param Request
  517.      */
  518.     public function onEdit$param )
  519.     {
  520.         try
  521.         {
  522.             if (isset($param['key']))
  523.             {
  524.                 $key $param['key'];  // get the parameter $key
  525.                 TTransaction::open('sistema'); // open a transaction
  526.                 $object = new Socio($key); // instantiates the Active Record
  527.                 $this->form->setData($object); // fill the form
  528.                 TTransaction::close(); // close the transaction
  529.                 
  530.                 $image = new TImage($object->foto);
  531.                 $image->style 'width: 100%';
  532.                 $this->frame->add$image );
  533.             }
  534.             else
  535.             {
  536.                 $this->form->clear();
  537.             }
  538.         }
  539.         catch (Exception $e// in case of exception
  540.         {
  541.             new TMessage('error'$e->getMessage()); // shows the exception error message
  542.             TTransaction::rollback(); // undo all pending operations
  543.         }
  544.     }
  545. }
  546. ?>

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)


LC

Apos o upload a imagem foi transferida para a pasta tmp ?
RC

O arquivo foi transferido com sucesso para a pasta tmp.
LC

Inspeciona o caminho da imagem para ver se ficou o src='tmp/2.jpg' , ou seja, se o caminho ficou certinho.
JC

Bom dia Ricardo Camara!

testei com a seguinte alteração e deu ok
  1. <?php
  2.   $this->frame = new TElement('div');
  3.         $this->frame->id 'photo_frame';
  4.         $this->frame->style 'width:400px;height:auto;min-height:200px;border:1px solid gray;padding:4px;';
  5.         $row $this->form->addRow();
  6.         $row->addCell('');
  7.         $row->addCell($this->frame);
  8. ?>
GZ

Estou com esse mesmo problema....
LN

Boa Tarde!
Estou com problema bastante semelhante. Após selecionar a foto não exibe o preview.

O src está correto tmp/foto.jpg mas não exibe a imagem. No onEdit exibe normalmente, e se, durante o preview eu copio ela do /tmp para a raiz do projeto, e altero no src pelo inspecionar elemento exibe normalmente. Voltando o /tmp no src já não exibe (mesmo com ela lá no /tmp).
RC

Obrigado a todos pela participação, especialmente ao Jorge Cenci,
eu descobri o problema.
Tinha um arquivo .htaccess dentro da pasta tmp, depois que o exclui funcionou perfeitamente.