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 ...
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á.

 
  1. <?php
  2. /**
  3. * DivulgacaoForm Form
  4. * @author <your name here>
  5. */
  6. class DivulgacaoForm extends TStandardForm//TPage
  7. {
  8. protected $form; // form
  9. private $frame;
  10. /**
  11. * Form constructor
  12. * @param $param Request
  13. */
  14. public function __construct( $param )
  15. {
  16. parent::__construct();
  17. // creates the form
  18. $this->form = new TQuickForm('form_Divulgacao');
  19. $this->form->class = 'tform'; // change CSS class
  20. $this->form = new BootstrapFormWrapper($this->form);
  21. $this->form->style = 'display: table;width:100%'; // change style
  22. // define the form title
  23. $this->form->setFormTitle('Divulgacao');
  24. // create the form fields
  25. $id = new TEntry('id');
  26. $titulo_divulgacao = new TEntry('titulo_divulgacao');
  27. $data_validade = new TDate('data_validade');
  28. $caminho_imagem = new TFile('caminho_imagem');
  29. // complete upload action
  30. $caminho_imagem->setCompleteAction(new TAction(array($this, 'onComplete')));
  31. //$caminho_imagem->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg'] );
  32. // add the fields
  33. $this->form->addQuickField('Id', $id, '30%' );
  34. $this->form->addQuickField('Titulo Divulgacao', $titulo_divulgacao, '70%' , new TRequiredValidator);
  35. $this->form->addQuickField('Data Validade', $data_validade, '70%' , new TRequiredValidator);
  36. $this->form->addQuickField('Caminho Imagem', $caminho_imagem, '70%' );
  37. $this->frame = new TElement('div');
  38. $this->frame->id = 'photo_frame';
  39. $this->frame->style = 'width:400px;height:auto;min-height:200px;border:1px solid gray;padding:4px;';
  40. $row = $this->form->addRow();
  41. $row->addCell('Imagem');
  42. $row->addCell($this->frame);
  43. if (!empty($id))
  44. {
  45. $id->setEditable(FALSE);
  46. }
  47. /** samples
  48. $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields
  49. $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
  50. $fieldX->setSize( 100, 40 ); // set size
  51. **/
  52. // create the form actions
  53. $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
  54. $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onClear')), 'bs:plus-sign green');
  55. // vertical box container
  56. $container = new TVBox;
  57. $container->style = 'width: 90%';
  58. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  59. $container->add(TPanelGroup::pack('Cadastro de Divulgacao', $this->form));
  60. //$container->add(TPanelGroup::pack('', $this->frame));
  61. parent::add($container);
  62. }
  63. /**
  64. * Save form data
  65. * @param $param Request
  66. */
  67. public static function onComplete($param)
  68. {
  69. new TMessage('info', 'Upload completed: '.$param['caminho_imagem']);
  70. // refresh photo_frame
  71. TScript::create("$('#photo_frame').html('')");
  72. TScript::create("$('#photo_frame').append(\"<img style='width:100%' src='tmp/{$param['caminho_imagem']}'>\");");
  73. }
  74. public function onSave( $param )
  75. {
  76. try
  77. {
  78. TTransaction::open('dbarma'); // open a transaction
  79. /**
  80. // Enable Debug logger for SQL operations inside the transaction
  81. TTransaction::setLogger(new TLoggerSTD); // standard output
  82. TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
  83. **/
  84. $this->form->validate(); // validate form data
  85. $object = new Divulgacao; // create an empty object
  86. $data = $this->form->getData(); // get form data as array
  87. $object->fromArray( (array) $data); // load the object with data
  88. $object->store(); // save the object
  89. // get the generated id
  90. $data->id = $object->id;
  91. $this->form->setData($data); // fill form data
  92. TTransaction::close(); // close the transaction
  93. if ($object instanceof Divulgacao)
  94. {
  95. $source_file = 'tmp/'.$object->caminho_imagem;
  96. $target_file = 'images/' . $object->caminho_imagem;
  97. $finfo = new finfo(FILEINFO_MIME_TYPE);
  98. // if the user uploaded a source file
  99. if (file_exists($source_file) AND ($finfo->file($source_file) == 'image/png' OR $finfo->file($source_file) == 'image/jpeg'))
  100. {
  101. // move to the target directory
  102. rename($source_file, $target_file);
  103. try
  104. {
  105. TTransaction::open('dbarma');
  106. // update the photo_path
  107. $object->caminho_imagem = 'images/'.$object->caminho_imagem;
  108. $object->store();
  109. TTransaction::close();
  110. }
  111. catch (Exception $e) // in case of exception
  112. {
  113. new TMessage('error', $e->getMessage());
  114. TTransaction::rollback();
  115. }
  116. }
  117. $image = new TImage($object->caminho_imagem);
  118. $image->style = 'width: 100%';
  119. $this->frame->add( $image );
  120. }
  121. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  122. }
  123. catch (Exception $e) // in case of exception
  124. {
  125. new TMessage('error', $e->getMessage()); // shows the exception error message
  126. $this->form->setData( $this->form->getData() ); // keep form data
  127. TTransaction::rollback(); // undo all pending operations
  128. }
  129. }
  130. /**
  131. * Clear form data
  132. * @param $param Request
  133. */
  134. public function onClear( $param )
  135. {
  136. $this->form->clear(TRUE);
  137. }
  138. /**
  139. * Load object to form data
  140. * @param $param Request
  141. */
  142. public function onEdit( $param )
  143. {
  144. try
  145. {
  146. if (isset($param['key']))
  147. {
  148. $key = $param['key']; // get the parameter $key
  149. TTransaction::open('dbarma'); // open a transaction
  150. $object = new Divulgacao($key); // instantiates the Active Record
  151. $this->form->setData($object); // fill the form
  152. TTransaction::close(); // close the transaction
  153. }
  154. else
  155. {
  156. $this->form->clear(TRUE);
  157. }
  158. if (isset($param['key']))
  159. {
  160. TTransaction::open('dbarma'); // open a transaction
  161. $key = $param['key'];
  162. $object = new Divulgacao($key);
  163. if ($object)
  164. {
  165. $image = new TImage($object->caminho_imagem);
  166. $image->style = 'width: 100%';
  167. $this->frame->add( $image );
  168. }
  169. TTransaction::close(); // close a transaction
  170. }
  171. }
  172. catch (Exception $e) // in case of exception
  173. {
  174. new TMessage('error', $e->getMessage()); // shows the exception error message
  175. TTransaction::rollback(); // undo all pending operations
  176. }
  177. }
  178. }

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


NR

Sérgio, acredito que seja alguma limitação da BootstrapFormWrapper. Faça o teste utilizando somente o TQuickForm.
 
  1. <?php
  2. $this->form = new BootstrapFormWrapper($this->form); // retire essa linha
  3. ?>

Se der certo, aconselho a usar a BootstrapFormBuilder com a função addContent
LG

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']}'>\")");

LG

TScript::create("$('#photo_frame').append("<img style='width:100%' src='tmp/{$param['caminho_imagem']}'>")");
LG

Não sei se o seu código já está assim: Está removendo a barra invertida antes das duas aspas internas.
SS

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?
SS

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?
NR

Acontece que o fórum retira as contra-barras. Deixe essa linha exatamente como no exemplo do tutor que deve funcionar.
SS

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!
AL

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.

WR

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