SS
Não exibe o frame de imagens de nenhuma forma!
Pessoal, não consigo descobrir o que esta errado. Já revisei várias vezes com o tutor. Meu form não exibe a div (frame) com a imagem de jeito nenhum.
Carrega as imagens no upload. Transfere corretamente para o diretório de imagens. Não exibe nenhuma mensagem de erro, mas não mostra a div com a imagem carregada.
Onde estou errando?
Abaixo segue o código da página e no anexo segue a tela como está.
Carrega as imagens no upload. Transfere corretamente para o diretório de imagens. Não exibe nenhuma mensagem de erro, mas não mostra a div com a imagem carregada.
Onde estou errando?
Abaixo segue o código da página e no anexo segue a tela como está.
- <?php
- /**
- * DivulgacaoForm Form
- * @author <your name here>
- */
- class DivulgacaoForm extends TStandardForm//TPage
- {
- protected $form; // form
- private $frame;
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- // creates the form
- $this->form = new TQuickForm('form_Divulgacao');
- $this->form->class = 'tform'; // change CSS class
- $this->form = new BootstrapFormWrapper($this->form);
- $this->form->style = 'display: table;width:100%'; // change style
- // define the form title
- $this->form->setFormTitle('Divulgacao');
- // create the form fields
- $id = new TEntry('id');
- $titulo_divulgacao = new TEntry('titulo_divulgacao');
- $data_validade = new TDate('data_validade');
- $caminho_imagem = new TFile('caminho_imagem');
- // complete upload action
- $caminho_imagem->setCompleteAction(new TAction(array($this, 'onComplete')));
- //$caminho_imagem->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg'] );
- // add the fields
- $this->form->addQuickField('Id', $id, '30%' );
- $this->form->addQuickField('Titulo Divulgacao', $titulo_divulgacao, '70%' , new TRequiredValidator);
- $this->form->addQuickField('Data Validade', $data_validade, '70%' , new TRequiredValidator);
- $this->form->addQuickField('Caminho Imagem', $caminho_imagem, '70%' );
- $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('Imagem');
- $row->addCell($this->frame);
- if (!empty($id))
- {
- $id->setEditable(FALSE);
- }
- /** samples
- $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields
- $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
- $fieldX->setSize( 100, 40 ); // set size
- **/
- // 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');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add(TPanelGroup::pack('Cadastro de Divulgacao', $this->form));
- //$container->add(TPanelGroup::pack('', $this->frame));
- parent::add($container);
- }
- /**
- * Save form data
- * @param $param Request
- */
- public static function onComplete($param)
- {
- new TMessage('info', 'Upload completed: '.$param['caminho_imagem']);
- // refresh photo_frame
- TScript::create("$('#photo_frame').html('')");
- TScript::create("$('#photo_frame').append(\"<img style='width:100%' src='tmp/{$param['caminho_imagem']}'>\");");
- }
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('dbarma'); // 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 Divulgacao; // 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
- if ($object instanceof Divulgacao)
- {
- $source_file = 'tmp/'.$object->caminho_imagem;
- $target_file = 'images/' . $object->caminho_imagem;
- $finfo = new finfo(FILEINFO_MIME_TYPE);
- // if the user uploaded a source file
- if (file_exists($source_file) AND ($finfo->file($source_file) == 'image/png' OR $finfo->file($source_file) == 'image/jpeg'))
- {
- // move to the target directory
- rename($source_file, $target_file);
- try
- {
- TTransaction::open('dbarma');
- // update the photo_path
- $object->caminho_imagem = 'images/'.$object->caminho_imagem;
- $object->store();
- TTransaction::close();
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- $image = new TImage($object->caminho_imagem);
- $image->style = 'width: 100%';
- $this->frame->add( $image );
- }
- 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(TRUE);
- }
- /**
- * 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('dbarma'); // open a transaction
- $object = new Divulgacao($key); // instantiates the Active Record
- $this->form->setData($object); // fill the form
- TTransaction::close(); // close the transaction
- }
- else
- {
- $this->form->clear(TRUE);
- }
- if (isset($param['key']))
- {
- TTransaction::open('dbarma'); // open a transaction
- $key = $param['key'];
- $object = new Divulgacao($key);
- if ($object)
- {
- $image = new TImage($object->caminho_imagem);
- $image->style = 'width: 100%';
- $this->frame->add( $image );
- }
- TTransaction::close(); // close a transaction
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- }
Sérgio, acredito que seja alguma limitação da BootstrapFormWrapper. Faça o teste utilizando somente o TQuickForm.
Se der certo, aconselho a usar a BootstrapFormBuilder com a função addContent
Olá Sérgio rodrigues, faça um teste ai
troque aonde cria o scrite na linha 95 deixando assim:
TScript::create("$('#photo_frame').append("<img style='width:100%' src='tmp/{$param['caminho_imagem']}'>")");
Não sei se o seu código já está assim: Está removendo a barra invertida antes das duas aspas internas.
Nataniel, ao retirar a linha do bootstrap que você aconselhou, realmente começou a exibir o quadro da imagem que antes não estava acontecendo. Obrigado.
Mas ainda não exibe a imagem no local.
Leandro, segui a sua dica do script, mas agora está dando o seguinte erro.
Parse error: syntax error, unexpected 'style' (T_STRING) in C:xampphtdocsctrlarmasappcontrolDivulgacaoForm.class.php on line 95
O que mais posso fazer?
Corrigindo. Após salvar, passa a exibir. Mas um novo registro, no upload, não exibe a imagem. Deve ser bem algo relacionado ao script que o Leandro falou.
Mais alguma dica?
Acontece que o fórum retira as contra-barras. Deixe essa linha exatamente como no exemplo do tutor que deve funcionar.
Há tá! Entendi! Ao revisar o código que postei, vi que realmente alterou o conteudo. Mas infelizmente está exatamente igual ao tutor, mas ele não carrega a imagem!
Sergio, talvez seja tarde, mas a pouco passei pelo mesmo problema usando o BootstrapForm(Builder ou Wrapper)e o que resolveu foi desabilitar o htaccess da pasta de imagem. apenas dela para não atrapalhar a segurança do framework.
Perdoe ser tarde, mas só agora ocorreu comigo e procurando no fórum vi sua pergunta, como resolvi, voltei pra postar resposta.
Também estava com o mesmo problema da imagem não aparecer no Frame, resolvi comentando a linha que o amigo Nataniel sugeriu lá no início do post.
Tentei também como o Alexsander falou , mas para mim não funcionou.
Enfim, agora está aparecendo a imagem no Frame.
Abraços