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 ?
Na minha tela da o seguinte erro!
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 ?
- <?php
- /**
- * FormMultiValuesView
- *
- * @version 1.0
- * @package samples
- * @subpackage tutor
- * @author Pablo Dall'Oglio
- * @copyright Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
- * @license http://www.adianti.com.br/framework-license
- */
- class MessageProposalForm extends TWindow
- {
- private $form;
- private $fieldlist;
- /**
- * Constructor
- */
- public function __construct($param)
- {
- parent::__construct();
- // create form and table container
- $this->form = new TForm('my_form');
- $subject = new TEntry('subject');
- $subject->setSize('100%');
- $this->form->addField($subject);
- $this->form->add(new TLabel('Assunto: '));
- $this->form->add($subject);
- $subject->addValidation('Assunto', new TRequiredValidator);
- $message = new TText('message');
- $message->setSize('100%');
- $this->form->addField($message);
- $this->form->add(new TLabel('Mensagem:'));
- $this->form->add($message);
- $prazo = new TEntry('Prazo');
- $prazo->setSize('100%');
- $this->form->addField($prazo);
- $this->form->add(new TLabel('Prazo:'));
- $this->form->add($prazo);
- $id_produto = new TEntry('id[]');
- $id_produto->setSize('90%');
- $id_produto->setEditable(FALSE);
- $descricao = new TEntry('descricao[]');
- $descricao->setEditable(FALSE);
- $quantidade = new TEntry('quantidade[]');
- $quantidade->setMask('9!');
- $quantidade->setEditable(FALSE);
- $quantidade->setSize('90%');
- // $valor = new TEntry('valor');
- $valor = new TNumeric('valor[]', '2', ',', '.' );
- // set exit action for valor
- $exit_action = new TAction(array($this, 'onChangeAction'));
- $valor->setExitAction($exit_action);
- $valortotalitem = new TEntry('valortotalitem[]');
- $valortotalitem->setEditable(FALSE);
- $unidade_medida_id = new TDBCombo('unidade_medida_id[]', 'produto', 'UnidadeMedida', 'id', '{nome}','id asc' );
- $this->fieldlist = new TFieldList;
- $this->fieldlist->width = '100%';
- $this->fieldlist->name = 'my_field_list';
- $this->fieldlist->addField( '<b>ID</b>', $id_produto, ['width' => '20%'] );
- $this->fieldlist->addField( '<b>Descrição</b>', $descricao, ['width' => '20%'] );
- $this->fieldlist->addField( '<b>Quantidade</b>', $quantidade, ['width' => '20%'] );
- $this->fieldlist->addField( '<b>Unidade de medida</b>', $unidade_medida_id, ['width' => '20%'] );
- $this->fieldlist->addField( '<b>Valor Unitário</b>', $valor, ['width' => '20%'] );
- $this->fieldlist->addField( '<b>Valor Total</b>', $valortotalitem, ['width' => '20%'] );
- $this->fieldlist->addHeader();
- TTransaction::open('produto'); // open transaction
- // query criteria
- $criteria = new TCriteria;
- $criteria->add(new TFilter('id_message', '=', $param['id']));
- // load using repository
- $repository = new TRepository('Produto');
- $customers = $repository->load($criteria);
- $data = new stdClass;
- foreach ($customers as $customer)
- {
- $row = $this->fieldlist->addDetail( new stdClass );
- $row->del($row->get(count($row->getChildren())-1));
- $data->id[] = $customer->id;
- $data->descricao[] = $customer->descricao;
- $data->quantidade[] = $customer->quantidade;
- $data->unidade_medida_id[] = $customer->unidade_medida_id;
- TForm::sendData('my_form', $data);
- }
- TTransaction::close(); // close transaction
- // $this->fieldlist->addCloneAction();
- $hbox1 = new THBox;
- $hbox1->addRowSet( $this->fieldlist );
- $frame1 = new TFrame;
- $frame1->setLegend('Produtos necessários');
- $frame1->add($hbox1);
- $this->form->add($frame1);
- // create save button
- $save = TButton::create('save', array($this, 'onSave'), 'Salvar', 'fa:save blue');
- $clear = TButton::create('clear', array($this, 'onClear'), 'Limpar', 'fa:eraser red');
- $this->form->addField($save);
- $this->form->addField($clear);
- $panel = new TPanelGroup('Formulário de Proposta');
- $panel->add($this->form);
- $panel->addFooter(THBox::pack($save, $clear));
- // wrap the page content using vertical box
- $vbox = new TVBox;
- $vbox->style = 'width: 100%';
- // $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $vbox->add($panel);
- parent::add($vbox);
- }
- public static function onSave($param)
- {
- print_r($param);
- }
- public static function onChangeAction($param)
- {
- print_r($param);
- }
- }
- ?>
Na minha tela da o seguinte erro!
- <?php
- Você deve passar o Adianti\Widget\Form\TEntry (valor[]) como parâmetro para TForm::setFields()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Form\TEntry->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/form/TFieldList.php : 317
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Form\TFieldList->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/form/TForm.php : 509
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Form\TForm->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/container/TJQueryDialog.php : 224
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/widget/base/TElement.php : 343
- Adianti\Widget\Container\TJQueryDialog->show()
- File: /lib/adianti/control/TPage.php : 207
- Adianti\Widget\Base\TElement->show()
- File: /lib/adianti/core/AdiantiCoreApplication.php : 64
- Adianti\Control\TPage->show(MessageProposalForm,onView,6)
- File: /engine.php : 23
- Adianti\Core\AdiantiCoreApplication::run(1)
- File: /engine.php : 64
- TApplication::run(1)
- ?>
A mensagem de erro aparece pois você não adicionou o campo ao form:
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