Lançado Adianti Framework 7.6!
Clique aqui para saber mais
não consigo TAction em fields dentro do TFieldList Olá pessoal, eu estou tendo um probleminha, se alguém já passou por isso ou tem alguma ideia de como poderia funcionar eu agradeço, a questão é eu tenho um formulário onde existem campos que serão gerados por uma tabela e pode haver N campos, no entanto esses campos devem possuir Taction uma vez que a pessoa preenche o valor de certo produto e eu quero colocar automaticamente o valor tota...
SM
não consigo TAction em fields dentro do TFieldList  
Olá pessoal, eu estou tendo um probleminha, se alguém já passou por isso ou tem alguma ideia de como poderia funcionar eu agradeço,
a questão é eu tenho um formulário onde existem campos que serão gerados por uma tabela e pode haver N campos, no entanto esses campos devem possuir Taction uma vez que a pessoa preenche o valor de certo produto e eu quero colocar automaticamente o valor total, e esses campos não são fixos por isso usei como base a tela do tutor FormMultiValuesView segue o link

https://www.adianti.com.br/framework_files/tutor/index.php?class=FormFieldListVi

a partir desse documento começei o meu
mas preciso adicionar as interações dinâminca, mas n sei como pegar um campo gerado...
ou eu teria que fazer isso com TScript ?

  1. <?php
  2. /**
  3.  * FormMultiValuesView
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class MessageProposalForm extends TWindow
  13. {
  14.     private $form;
  15.     private $fieldlist;
  16.     
  17.     /**
  18.      * Constructor
  19.      */
  20.     public function __construct($param)
  21.     {
  22.         parent::__construct();
  23.         // create form and table container
  24.         $this->form = new TForm('my_form');
  25.         $subject = new TEntry('subject');
  26.         $subject->setSize('100%');
  27.         $this->form->addField($subject);
  28.         $this->form->add(new TLabel('Assunto: '));
  29.         $this->form->add($subject);
  30.         $subject->addValidation('Assunto', new TRequiredValidator);
  31.         
  32.         $message = new TText('message');
  33.         $message->setSize('100%');
  34.         $this->form->addField($message);
  35.         $this->form->add(new TLabel('Mensagem:'));
  36.         $this->form->add($message);
  37.         
  38.         $prazo = new TEntry('Prazo');
  39.         $prazo->setSize('100%');
  40.         $this->form->addField($prazo);
  41.         $this->form->add(new TLabel('Prazo:'));
  42.         $this->form->add($prazo);
  43.        
  44.         $id_produto = new TEntry('id[]');
  45.         $id_produto->setSize('90%');
  46.         $id_produto->setEditable(FALSE);
  47.         $descricao = new TEntry('descricao[]');
  48.         $descricao->setEditable(FALSE);
  49.         $quantidade = new TEntry('quantidade[]');
  50.         $quantidade->setMask('9!');
  51.         $quantidade->setEditable(FALSE);
  52.         $quantidade->setSize('90%');
  53.         // $valor = new TEntry('valor');
  54.         $valor = new TNumeric('valor[]''2'',''.' );
  55.         // set exit action for valor
  56.         $exit_action = new TAction(array($this'onChangeAction'));
  57.         $valor->setExitAction($exit_action);
  58.         $valortotalitem = new TEntry('valortotalitem[]');
  59.         $valortotalitem->setEditable(FALSE);
  60.         $unidade_medida_id = new TDBCombo('unidade_medida_id[]''produto''UnidadeMedida''id''{nome}','id asc'  );
  61.         
  62.         $this->fieldlist = new TFieldList;
  63.         $this->fieldlist->width '100%';
  64.         $this->fieldlist->name  'my_field_list';
  65.         $this->fieldlist->addField'<b>ID</b>',  $id_produto,  ['width' => '20%'] );
  66.         $this->fieldlist->addField'<b>Descrição</b>',  $descricao,  ['width' => '20%'] );
  67.         $this->fieldlist->addField'<b>Quantidade</b>',   $quantidade,   ['width' => '20%'] );
  68.         $this->fieldlist->addField'<b>Unidade de medida</b>'$unidade_medida_id, ['width' => '20%'] );
  69.         $this->fieldlist->addField'<b>Valor Unitário</b>',  $valor,  ['width' => '20%'] );
  70.         $this->fieldlist->addField'<b>Valor Total</b>',  $valortotalitem,  ['width' => '20%'] );
  71.       
  72.         
  73.         $this->fieldlist->addHeader();
  74.         TTransaction::open('produto'); // open transaction
  75.         // query criteria
  76.         $criteria = new TCriteria
  77.         $criteria->add(new TFilter('id_message''='$param['id'])); 
  78.         // load using repository
  79.         $repository = new TRepository('Produto'); 
  80.         $customers $repository->load($criteria); 
  81.         $data = new stdClass;
  82.         foreach ($customers as $customer
  83.         { 
  84.             $row $this->fieldlist->addDetail( new stdClass );
  85.             $row->del($row->get(count($row->getChildren())-1));
  86.             $data->id[]  = $customer->id;
  87.             $data->descricao[] = $customer->descricao;
  88.             $data->quantidade[] = $customer->quantidade;
  89.             $data->unidade_medida_id[] = $customer->unidade_medida_id;
  90.             TForm::sendData('my_form'$data);
  91.         }
  92.         TTransaction::close(); // close transaction
  93.         // $this->fieldlist->addCloneAction();
  94.         
  95.         $hbox1 = new THBox;
  96.         $hbox1->addRowSet$this->fieldlist );
  97.         $frame1 = new TFrame;
  98.         $frame1->setLegend('Produtos necessários');
  99.         $frame1->add($hbox1);
  100.         $this->form->add($frame1);
  101.         // create save button
  102.         $save  TButton::create('save',  array($this'onSave'), 'Salvar''fa:save blue');
  103.         $clear TButton::create('clear', array($this'onClear'), 'Limpar''fa:eraser red');
  104.         
  105.         $this->form->addField($save);
  106.         $this->form->addField($clear);
  107.         
  108.         $panel = new TPanelGroup('Formulário de Proposta');
  109.         $panel->add($this->form);
  110.         $panel->addFooter(THBox::pack($save$clear));
  111.         
  112.         // wrap the page content using vertical box
  113.         $vbox = new TVBox;
  114.         $vbox->style 'width: 100%';
  115.         // $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  116.         $vbox->add($panel);
  117.         parent::add($vbox);
  118.     }
  119.     
  120.     public static function onSave($param)
  121.     {
  122.         print_r($param);
  123.     }
  124.     public static function onChangeAction($param)
  125.     { 
  126.         print_r($param);
  127.     }
  128. ?>




Na minha tela da o seguinte erro!
  1. <?php
  2. Você deve passar o Adianti\Widget\Form\TEntry (valor[]) como parâmetro para TForm::setFields()
  3.  
  4. File: /lib/adianti/widget/base/TElement.php 343
  5.   Adianti\Widget\Form\TEntry->show()
  6. File: /lib/adianti/widget/base/TElement.php 343
  7.   Adianti\Widget\Base\TElement->show()
  8. File: /lib/adianti/widget/base/TElement.php 343
  9.   Adianti\Widget\Base\TElement->show()
  10. File: /lib/adianti/widget/base/TElement.php 343
  11.   Adianti\Widget\Base\TElement->show()
  12. File: /lib/adianti/widget/form/TFieldList.php 317
  13.   Adianti\Widget\Base\TElement->show()
  14. File: /lib/adianti/widget/base/TElement.php 343
  15.   Adianti\Widget\Form\TFieldList->show()
  16. File: /lib/adianti/widget/base/TElement.php 343
  17.   Adianti\Widget\Base\TElement->show()
  18. File: /lib/adianti/widget/base/TElement.php 343
  19.   Adianti\Widget\Base\TElement->show()
  20. File: /lib/adianti/widget/base/TElement.php 343
  21.   Adianti\Widget\Base\TElement->show()
  22. File: /lib/adianti/widget/form/TForm.php 509
  23.   Adianti\Widget\Base\TElement->show()
  24. File: /lib/adianti/widget/base/TElement.php 343
  25.   Adianti\Widget\Form\TForm->show()
  26. File: /lib/adianti/widget/base/TElement.php 343
  27.   Adianti\Widget\Base\TElement->show()
  28. File: /lib/adianti/widget/base/TElement.php 343
  29.   Adianti\Widget\Base\TElement->show()
  30. File: /lib/adianti/widget/base/TElement.php 343
  31.   Adianti\Widget\Base\TElement->show()
  32. File: /lib/adianti/widget/base/TElement.php 343
  33.   Adianti\Widget\Base\TElement->show()
  34. File: /lib/adianti/widget/container/TJQueryDialog.php 224
  35.   Adianti\Widget\Base\TElement->show()
  36. File: /lib/adianti/widget/base/TElement.php 343
  37.   Adianti\Widget\Container\TJQueryDialog->show()
  38. File: /lib/adianti/control/TPage.php 207
  39.   Adianti\Widget\Base\TElement->show()
  40. File: /lib/adianti/core/AdiantiCoreApplication.php 64
  41.   Adianti\Control\TPage->show(MessageProposalForm,onView,6)
  42. File: /engine.php 23
  43.   Adianti\Core\AdiantiCoreApplication::run(1)
  44. File: /engine.php 64
  45.   TApplication::run(1)
  46. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (1)


NR

A mensagem de erro aparece pois você não adicionou o campo ao form:
  1. <?php
  2. $this->form->addField($valor);
  3. ?>

No link abaixo tem um exemplo usando TFieldList que preenche outros campos após onchange:
www.adianti.com.br/framework_files/tutor/index.php?class=SaleMultiVa