Imagens no formulário Gostaria de saber como fazer para mostra a imagem selecionada com o objeto TFile e como mostrar a imagem quando for atualização. Comprei o livro, tentei de várias formas, mas não consegui. Se puder ajudar agradeço....
FV
Imagens no formulário  
Fechado
Gostaria de saber como fazer para mostra a imagem selecionada com o objeto TFile e como mostrar a imagem quando for atualização.
Comprei o livro, tentei de várias formas, mas não consegui. Se puder ajudar agradeço.

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


GF

Olá Fagner. Isso é bem tranquilo. Para aparecer a imagem você pode salvar, após o upload da mesma, um apontamento para essa imagem. Exemplo:

 
  1. <?php
  2. //Carrega o objeto
  3. $obj = new Objeto(1);
  4. //Instancia o objeto TImage
  5. //Sendo que o location é o caminho para a imagem
  6. $img = new TImage($obj->location);
  7. ?>


Nesse tipo de formulário, deixo o upload de fotos como optativo, caso o usuário não submeta arquivo com fotos eu faço apontar para uma imagem indicando sem foto.

Valeu?
GR

estou com duvidas nisso também,

 
  1. <?php
  2. /**
  3. * classe TImage
  4. * classe para exibição de imagens
  5. */
  6. class TImage extends TElement
  7. {
  8. private $source; // localização da imagem
  9. /**
  10. * método construtor
  11. * instancia objeto TImage
  12. * @param $source = localização da imagem
  13. */
  14. public function __construct($source)
  15. {
  16. parent::__construct('img');
  17. // atribui a localização da imagem
  18. $this->src = $source;
  19. $this->border = 0;
  20. }
  21. }
  22. </code>



ou no ProdutosList.class

seu livro é uns dos melhores que já eu li, parabéns.
valeu
LJ

fiz um codigo bem simples, só que só da erro:

Erro: Argument 1 passed to TForm::addField must implement interface IWidget, instance of TImage given, called in C:siterenomearlibadiantiwidgetwebformTForm.class.php on line 196

 
  1. <?php
  2. /**
  3. * ProductForm Registration
  4. *
  5. * @version 1.0
  6. * @package samples
  7. * @subpackage library
  8. * @author Pablo DallOglio
  9. * @copyright Copyright (c) 2006-2011 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10. * @license http://www.adianti.com.br/framework-license
  11. */
  12. class ProductForm extends TPage
  13. {
  14. private $form; // form
  15. /**
  16. * Class constructor
  17. * Creates the page and the registration form
  18. */
  19. function __construct()
  20. {
  21. parent::__construct();
  22. // creates the form
  23. $this->form = new TForm('form_Product');
  24. // creates a table
  25. $table = new TTable;
  26. $table_buttons = new TTable;
  27. // add the table inside the form
  28. $this->form->add($table);
  29. // create the form fields
  30. $id = new TEntry('id');
  31. $name = new TEntry('name');
  32. $image = new TImage('image');
  33. $name->setSize(200);
  34. $row=$table->addRow();
  35. $row->addCell(new TLabel('Id:'));
  36. $cell=$row->addCell($id);
  37. $cell->colspan=2;
  38. // add a row for the field nome
  39. $row=$table->addRow();
  40. $row->addCell(new TLabel('Nome:'));
  41. $cell=$row->addCell($name);
  42. $cell->colspan=2;
  43. // add a row for the field imagem
  44. $row=$table->addRow();
  45. $row->addCell(new TLabel('Imagem:'));
  46. $cell=$row->addCell($image);
  47. $cell->colspan=2;
  48. // create an action button (go to list)
  49. $goto_button=new TButton('list');
  50. // define the button action
  51. $goto_button->setAction(new TAction(array('ProductDataGridView', 'onReload')), 'Listagem');
  52. $goto_button->setImage('ico_datagrid.gif');
  53. // add a row for the form action
  54. $row=$table_buttons->addRow();
  55. $row->addCell($goto_button);
  56. // add a row for the form action
  57. $row=$table->addRow();
  58. $cell=$row->addCell($table_buttons);
  59. $cell->colspan=3;
  60. // define wich are the form fields
  61. $this->form->setFields(array($id,$name,$image,$goto_button));
  62. // add the form to the page
  63. parent::add($this->form);
  64. }
  65. /**
  66. * method onEdit()
  67. * Executed whenever the user clicks at the edit button da datagrid
  68. */
  69. function onEdit($param)
  70. {
  71. try
  72. {
  73. if (isset($param['key']))
  74. {
  75. // get the parameter $key
  76. $key=$param['key'];
  77. // open a transaction with database 'fotos'
  78. TTransaction::open('fotos');
  79. // instantiates object Book
  80. $object = new Product($key);
  81. // fill the form with the active record data
  82. $this->form->setData($object);
  83. TTransaction::close();
  84. }
  85. else
  86. {
  87. $this->form->clear();
  88. }
  89. }
  90. catch (Exception $e) // in case of exception
  91. {
  92. // shows the exception error message
  93. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  94. // undo all pending operations
  95. TTransaction::rollback();
  96. }
  97. }
  98. }
  99. ?>


PD

Oi pessoal,

A imagem (TImage) não é um componente de formulário, por isso ela não implementa a interface IWidget. Para fazer upload de imagem, recomendo usar o TFile, que inclusive está passando por uma grande reformulação (melhorias) para a próxima versão. Para exibir a imagem, você pode usar a TImage, mas não deve passar no setFields().

A exceção está sendo gerada pelo setFields(), que determina quais campos serão passados no POST do formulário ;-)

abraço,
Pablo
FM

Beleza, então como eu carrego a imagem ?
PD

Flavio,

Aguarde mais uns dias. Melhoramos o exempo do tutor (ProductForm) para demonstrar como fazer isso.
Sairá junto com a versão 3.0.0

Att
FM

Sério que ja vai sair a versão 3.0 ? vem muita novidades ?
PD

Várias novidades.
Em até 15 dias espero liberar o release.

Abraços!