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?

<?php/** * SocioForm Form * @author  <your name here> */class SocioForm extends TPage{    protected $form; // form    private   $frame;        /**     * Form constructor     * @param $param Request     */    public function __construct( $param )    {        parent::__construct();                // creates the form        $this->form = new TForm('form_Socio');        $this->form->class = 'tform'; // change CSS class        //$this->form = new BootstrapFormWrapper($this->form);        $this->form->style = 'display: table;width:100%'; // change style                $notebook1     = new BootstrapNotebookWrapper( new TNotebook(500, 460) );         $this->form->add($notebook1);                           // create the form fields        $id = new TEntry('id');        $id->setEditable(FALSE);        $id->setSize(100);                $nome = new TEntry('nome');        $nome->setSize('100%');        $nome->addValidation('nome', new TRequiredValidator);                 $cpf = new TEntry('cpf');        $cpf->addValidation('cpf', new TCPFValidator);         $cpf->setMask('999.999.999-99');        $cpf->setSize(200);                $rg = new TEntry('rg');        $rg->setSize(200);                $data_nascimento = new TDate('data_nascimento');        $data_nascimento->setMask('dd/mm/yyyy');        $data_nascimento->setSize(178);                $cadastrado = new TDate('cadastrado');        $cadastrado->setEditable(FALSE);        $cadastrado->setSize(200);                $pai = new TEntry('pai');        $pai->setSize('100%');                $mae = new TEntry('mae');        $mae->setSize('100%');                $ativo = new TEntry('ativo');        $ativo->setEditable(FALSE);        $ativo->setSize(200);                $sexo_id = new TDBRadioGroup('sexo_id', 'sistema', 'Sexo', 'id', 'descricao');        $sexo_id->setLayout('horizontal');                        $estado_civil_id = new TDBCombo('estado_civil_id', 'sistema', 'EstadoCivil', 'id', 'descricao');        $estado_civil_id->setSize(200);                $cidade_nascimento_id = new 
">TDBSeekButton('cidade_nascimento_id', 'sistema', 'form_Socio', 'Cidade', 'nome', 'cidade_nascimento_id', 'cidade_nascimento_nome');        $cidade_nascimento_id->setSize(30);        $cidade_nascimento_nome = new TEntry('cidade_nascimento_nome');          $cidade_nascimento_nome->setEditable(FALSE);         $cidade_nascimento_nome->setSize(146);                $email = new TEntry('email');           $email->addValidation('email', new TEmailValidator);          $email->setSize('100%');                $matricula = new TEntry('matricula');        $matricula->addValidation('matricula', new TNumericValidator);        $matricula->setSize(200);                $ade = new TEntry('ade');                    $ade->setSize(200);                    $data_admissao = new TDate('data_admissao');        $data_admissao->setMask('dd/mm/yyyy');        $data_admissao->setSize(178);                                        $cargo_funcao_id = new TDBCombo('cargo_funcao_id', 'sistema', 'CargoFuncao', 'id', 'descricao');                  $cargo_funcao_id->setSize(200);                 $departamento_id = new 
">TDBSeekButton('departamento_id', 'sistema', 'form_Socio', 'Departamento', 'sigla', 'departamento_id', 'departamento_sigla');                           $departamento_id->setSize(30);        $departamento_sigla = new TEntry('departamento_sigla');          $departamento_sigla->setEditable(FALSE);         $departamento_sigla->setSize(146);                                                  //prepara a tabela de dados pessoais         $pessoais = new TTable;                  //$pessoais->border = '1';              $row = $pessoais->addRow()->addCell(new TLabel(''))->width = 80;                $row = $pessoais->addRow();        $row->addCell(new TLabel('Id'));        $row->addCell($id)->colspan = 3;        $row = $pessoais->addRow();        $row->addCell(new TLabel('Nome'));        $row->addCell($nome)->colspan = 3;        $row = $pessoais->addRow();        $row->addCell(new TLabel('Mãe'));        $row->addCell($mae)->colspan = 3;        $row = $pessoais->addRow();        $row->addCell(new TLabel('Pai'));        $row->addCell($pai)->colspan = 3;        $row = $pessoais->addRow();        $row->addCell(new TLabel('E-mail'));        $row->addCell($email)->colspan = 3;                                        $pessoais->addRowSet( new TLabel(''));                $row = $pessoais->addRow();                     $row->addCell(new TLabel(''));        $row->addCell(new TLabel('CPF'))->width = 250;                $row->addCell(new TLabel('Identidade'))->colspan = 2;        $row = $pessoais->addRow();        $row->addCell(new TLabel(''));        $row->addCell($cpf);        $row->addCell($rg)->colspan = 2;                $row = $pessoais->addRow();        $row->addCell(new TLabel(''));        $row->addCell(new TLabel('Data de Nascimento'));                $row->addCell(new TLabel('Cidade de Nascimento'))->colspan = 2;        $row = $pessoais->addRow();        $row->addCell(new TLabel(''));        $row->addCell($data_nascimento);        $row->addCell($cidade_nascimento_id);        $row->addCell($cidade_nascimento_nome);                $row = $pessoais->addRow();        $row->addCell(new TLabel(''));        $row->addCell(new TLabel('Estado Civil'));                $row->addCell(new TLabel('Sexo'))->colspan = 2;        $row = $pessoais->addRow();        $row->addCell(new TLabel(''));        $row->addCell($estado_civil_id);                $row->addCell($sexo_id)->colspan = 2;                       $row = $pessoais->addRow();        $row->addCell(new TLabel(''));        $row->addCell(new TLabel('Situacao'));                $row->addCell(new TLabel('Data de Cadastro'))->colspan = 2;        $row = $pessoais->addRow();        $row->addCell(new TLabel(''));        $row->addCell($ativo);                $row->addCell($cadastrado)->colspan = 2;                                //prepara a tabela de dados profissionais         $profissional = new TTable;          //$profissional->border = '1';         $profissional->addRowSet( new TLabel(''));                $row = $profissional->addRow();                        $row->addCell(new TLabel('Matrícula'))->colspan = 2;               $row->addCell(new TLabel('Data de Admissão'));        $row = $profissional->addRow();                $row->addCell($matricula)->colspan = 2;        $row->addCell($data_admissao);                $row = $profissional->addRow();                $row->addCell(new TLabel('ADE'))->colspan = 2;                $row->addCell(new TLabel('Cargo/Função'));        $row = $profissional->addRow();                $row->addCell($ade)->colspan = 2;        $row->addCell($cargo_funcao_id);               $row = $profissional->addRow();                $row->addCell(new TLabel('Lotação'))->colspan = 2;                        $row = $profissional->addRow();                $row->addCell($departamento_id);                $row->addCell($departamento_sigla)->width = 200;                                                       //prepara a tabela de endereco        $endereco_id = new TEntry('endereco_id');                $endereco = new TTable;          //$endereco->border = '1';         $endereco->addRowSet( new TLabel(''));                  $cep = new TEntry('cep');                      $cep->setMask('99.999-999');        $cep->setSize(100);        $busca_cep = new TAction( array($this, 'onBuscaCEP') );        $cep->setExitAction($busca_cep);                        $estado_id = new TEntry('estado_id');        $estado_id->setEditable(FALSE);        $estado_id->setSize(200);                                $cidade_id = new TEntry('cidade_id');        $cidade_id->setEditable(FALSE);        $cidade_id->setSize(200);                        $bairro_id = new TEntry('bairro_id');        $bairro_id->setEditable(FALSE);        $bairro_id->setSize(200);                $logradouro_id  = new TEntry('logradouro_id');        $logradouro_id->setSize(450);                $numero      = new TEntry('numero');        $numero->setSize(200);                $complemento = new TEntry('complemento');        $complemento->setSize(200);                    $ponto_referencia = new TText('ponto_referencia');        $ponto_referencia->setSize(450, 70);                    $row = $endereco->addRow();                        $row->addCell(new TLabel('CEP'))->colspan = 2;               $row->addCell(new TLabel('Estado'));        $row = $endereco->addRow();                $row->addCell($cep)->colspan = 2;        $row->addCell($estado_id);                $row = $endereco->addRow();                $row->addCell(new TLabel('Cidade'))->colspan = 2;                $row->addCell(new TLabel('Bairro'));        $row = $endereco->addRow();                $row->addCell($cidade_id)->colspan = 2;        $row->addCell($bairro_id);                $row = $endereco->addRow();                $row->addCell(new TLabel('Logradouro'))->colspan = 3;                        $row = $endereco->addRow();                $row->addCell($logradouro_id)->colspan = 3;                       $row = $endereco->addRow();                $row->addCell(new TLabel('Número'))->colspan = 2;                $row->addCell(new TLabel('Complemento'));        $row = $endereco->addRow();                $row->addCell($numero)->colspan = 2;        $row->addCell($complemento);                  $row = $endereco->addRow();                $row->addCell(new TLabel('Ponto de Referência'))->colspan = 3;                        $row = $endereco->addRow();         $cell = $row->addCell('');         $cell->width = 500;            $cell->colspan = 3;          $cell->add($ponto_referencia);                                                        //montando o TMultiField de telefones                               $telefones          = new TMultiField('telefones');         $telefones->setHeight(160);                          $telefones->setOrientation('horizontal');                           $ddd            = new TEntry('ddd');        $ddd->setSize(70);        $ddd->setMaxLength(2);                $numero         = new TEntry('numero');        $numero->setSize(150);                $telefones->addField('ddd', 'DDD', $ddd, 70);        $telefones->addField('numero', 'Numero', $numero, 150, TRUE);                //$operadora_id     = new TDBCombo('operadora_id', 'sistema', 'Operadora', 'id', 'nome');        //$operadora_id->setLayout('horizontal');        $operadora     = new TComboCombined('operadora_id', 'operadora_nome');        $operadora->setSize(150);                try        {            TTransaction::open('sistema');            $items = Operadora::getObjects();                $array = [];                    foreach ($items as $item)            {                $array[$item->id] = $item->nome;            }                        $operadora->addItems( $array );                 $telefones->addField('operadora', 'Operadora',  $operadora, 174);            TTransaction::close();        }        catch (Exception $e)        {            new TMessage('error', $e->getMessage());        }                                //prepara a tabela de foto        $table_foto = new TTable;          //$table_foto->border = '1';         $table_foto->addRowSet( new TLabel(''));                $foto = new TFile('foto');         $foto->setSize(350);         // complete upload action        $foto->setCompleteAction(new TAction(array($this, 'onComplete')));                           $table_foto->addRowSet(new TLabel('Selecione a Foto do Sócio'));          $table_foto->addRowSet($foto);                 $this->frame = new TElement('div');        $this->frame->id = 'photo_frame';        $this->frame->style = 'width:400px; height:auto; min-height:200px; border:1px solid gray; padding:4px;';        $table_foto->addRowSet($this->frame);                                                                //montando o TMultiField de dependentes                               $dependentes          = new TMultiField('dependentes');         $dependentes->setHeight(200);                          //$dependentes->setOrientation('horizontal');                           $dependente_nome            = new TEntry('dependente_nome');        $dependente_nome->setSize(350);                $dependente_cpf = new TEntry('dependente_cpf');        $dependente_cpf->addValidation('dependente_cpf', new TCPFValidator);         $dependente_cpf->setMask('999.999.999-99');        $dependente_cpf->setSize(200);                $dependente_rg = new TEntry('dependente_rg');        $dependente_rg->setSize(200);                $dependente_data_nascimento = new TDate('dependente_data_nascimento');        $dependente_data_nascimento->setMask('dd/mm/yyyy');        $dependente_data_nascimento->setSize(178);                $dependentes->addField('dependente_nome', 'Nome', $dependente_nome, 300, TRUE);        $dependentes->addField('dependente_data_nascimento', 'Data de Nascimento', $dependente_data_nascimento, 80, TRUE);        $dependentes->addField('dependente_cpf', 'CPF', $dependente_cpf, 120);        $dependentes->addField('dependente_rg', 'Identidade', $dependente_rg, 150);                                $parentesco     = new TComboCombined('parentesco_id', 'parentesco_nome');        $parentesco->setSize(120);                try        {            TTransaction::open('sistema');            $items = Parentesco::getObjects();                $array = [];                    foreach ($items as $item)            {                $array[$item->id] = $item->descricao;            }                        $parentesco->addItems( $array );                 $dependentes->addField('parentesco', 'Parentesco',  $parentesco, 174);            TTransaction::close();        }        catch (Exception $e)        {            new TMessage('error', $e->getMessage());        }                                                                       $notebook1->appendPage('Dados Pessoais', $pessoais);        $notebook1->appendPage('Dados Profissionais', $profissional);        $notebook1->appendPage('Endereço', $endereco);        $notebook1->appendPage('Telefones', $telefones);        $notebook1->appendPage('Foto', $table_foto);          $notebook1->appendPage('Dependentes', $dependentes);                    // create the form actions        /*        $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');        $this->form->addQuickAction(_t('New'),  new TAction(array($this, 'onClear')), 'bs:plus-sign green');        */                $button = TButton::create('save', array($this, 'onSave'), 'Save', 'fa:save');                $this->form->setFields( array($id, $nome, $cpf, $rg, $data_nascimento, $cadastrado,                                  $pai, $mae, $ativo, $sexo_id, $estado_civil_id, $cidade_nascimento_id,                                  $cidade_nascimento_nome, $email, $matricula, $ade, $data_admissao, $foto,                                  $departamento_id, $cargo_funcao_id, $endereco_id, $telefones,                                  $cep, $estado_id, $cidade_id, $bairro_id, $logradouro_id, $numero,                                 $complemento, $ponto_referencia) );         $this->form->addField($button);                $buttons_box = new TVBox;        $buttons_box->add($button);                // add a row for the form action        $botoes = new TTable;          $botoes->border = '1';        $row = $botoes->addRow();        $row->class = 'tformaction'; // CSS class        $row->addCell($buttons_box)->colspan = 2;                // vertical box container        $container = new TVBox;        $container->style = 'width: 90%';        // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));                $container->add(TPanelGroup::pack('Cadastro de Sócio', $this->form));                parent::add($container);        parent::add($botoes);        /*        $botoes = new TTable;           $botoes->width = '90%';              //$botoes->border = '1';                 $row = $botoes->addRow();         $cell = $row->addCell($button);                 $cell->class = 'formaction';          parent::add($botoes);*/    }                /**     * On complete upload     */    public static function onComplete($param)    {        new TMessage('info', 'Carregamento Completo: '.$param['foto']);              // refresh photo_frame        TScript::create("$('#photo_frame').html('')");        TScript::create("$('#photo_frame').append(\\"<img style='width:100%' src='tmp/{$param['foto']}'>\\");");                            }            /**     * method onBuscaCEP($param)     * Executado quando sair do campo $cep     * Busca o endereco conforme o cep informado, para preencher os demais campos do endereco     */    public static function onBuscaCEP($param)     {        //$obj  = new StdClass;        $obj = $this->form->getData('Endereco');            //$data = new PCepProgs($param['cep']);        //$data = new PCepProgs('51350250');print_r($obj);die;                        $obj->logradouro = $data->getRua();        $obj->cidade     = $data->getCidade();        $obj->bairro     = $data->getBairro();;        $obj->estado_id  = $data->getUf();;         //TForm::sendData('form_Clientes', $obj);        $this->form->setData($obj);      }            /**     * Save form data     * @param $param Request     */    public function onSave( $param )    {        try        {            TTransaction::open('sistema'); // open a transaction                        /**            // Enable Debug logger for SQL operations inside the transaction            TTransaction::setLogger(new TLoggerSTD); // standard output            TTransaction::setLogger(new TLoggerTXT('log.txt')); // file            **/                        $this->form->validate(); // validate form data                        $object = new Socio;  // create an empty object            $data = $this->form->getData(); // get form data as array            $object->fromArray( (array) $data); // load the object with data            $object->store(); // save the object                        // get the generated id            $data->id = $object->id;                        $this->form->setData($data); // fill form data            TTransaction::close(); // close the transaction                        new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));        }        catch (Exception $e) // in case of exception        {            new TMessage('error', $e->getMessage()); // shows the exception error message            $this->form->setData( $this->form->getData() ); // keep form data            TTransaction::rollback(); // undo all pending operations        }    }        /**     * Clear form data     * @param $param Request     */    public function onClear( $param )    {        $this->form->clear();    }        /**     * Load object to form data     * @param $param Request     */    public function onEdit( $param )    {        try        {            if (isset($param['key']))            {                $key = $param['key'];  // get the parameter $key                TTransaction::open('sistema'); // open a transaction                $object = new Socio($key); // instantiates the Active Record                $this->form->setData($object); // fill the form                TTransaction::close(); // close the transaction                                $image = new TImage($object->foto);                $image->style = 'width: 100%';                $this->frame->add( $image );            }            else            {                $this->form->clear();            }        }        catch (Exception $e) // in case of exception        {            new TMessage('error', $e->getMessage()); // shows the exception error message            TTransaction::rollback(); // undo all pending operations        }    }}?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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
<?php  $this->frame = new TElement('div');        $this->frame->id = 'photo_frame';        $this->frame->style = 'width:400px;height:auto;min-height:200px;border:1px solid gray;padding:4px;';        $row = $this->form->addRow();        $row->addCell('');        $row->addCell($this->frame);?>
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.