Lançado Adianti Framework 7.6!
Clique aqui para saber mais
onChange agindo em outras campos. Tenho 3 combos, com ações caso eles forem selecionado, mas quando seleciono o primeiro combo, ele dispara todas outras ações, de todos os combos, o que pode estar acontecendo.? Anexo um video com o acontecido e abaixo o codigo fonte. ...
FK
onChange agindo em outras campos.  
Tenho 3 combos, com ações caso eles forem selecionado, mas quando seleciono o primeiro combo, ele dispara todas outras ações, de todos os combos, o que pode estar acontecendo.? Anexo um video com o acontecido e abaixo o codigo fonte.
  1. <?php
  2. // use wfp\wfpwidgets\WFPNotification;
  3. class CaptacaoFormulario extends TPage
  4. {
  5.     private $form;
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         
  10.         $this->form = new BootstrapFormBuilder('form_captacao');
  11.         $this->form->setFormTitle('Captação de Vagas');
  12.         $this->form->setFieldSizes('100%');
  13.         // *****************************************************
  14.         // PRIMEIRA ABA - VAGA
  15.         // *****************************************************
  16.         $this->form->appendPage('Vaga');
  17.         
  18.         $pk_vaga = new TEntry('pk_concurso');
  19.         $pk_vaga->setEditable(FALSE);
  20.         $criterio = new TCriteria();
  21.         $criterio->add(new TFilter('centro_usuario_fk''='TSession::getValue('userid') ));
  22.         $vaga_colegiado_fk = new TDBCombo('vaga_colegiado_fk''app''ViewColegiadoCentroCampus''pk_colegiado''{colegiado_nome} / {centro_nome} / {campus_nome}'null$criterio);
  23.         $vaga_motivo_vacancia = new TText('vaga_motivo_vacancia');
  24.         $vaga_docente_substituido = new TEntry('vaga_docente_substituido');
  25.         $vaga_quantidade = new TSpinner('vaga_quantidade');
  26.         $vaga_quantidade->setRange(1,101);    
  27.         
  28.         $vaga_carga_horaria = new TCombo('carga_horaria');            
  29.         $vaga_carga_horaria->addItems(['T-10'=>'T-10','T-20'=>'T-20','T-40'=>'T-40',]);
  30.         $vaga_escolaridade_fk = new TDBCombo('vaga_escolaridade_fk''app''Escolaridade''pk_escolaridade''escolaridade_nome');
  31.         $criterio = new TCriteria();
  32.         $criterio->add(new TFilter('pk_cnpq''LIKE''%00.00.00%' ));
  33.         $this->vaga_cnpq_grande_area_fk = new TDBCombo('vaga_cnpq_grande_area_fk''app''Cnpq''pk_cnpq''cnpq_nome'null$criterio);
  34.         $change_grande_area = new TAction(array($this'onChangeGrandeArea'));
  35.         $this->vaga_cnpq_grande_area_fk->setChangeAction($change_grande_area);       
  36.         $vaga_cnpq_area_fk = new TCombo('vaga_cnpq_area_fk');
  37.         $change_area = new TAction(array($this'onChangeArea'));
  38.         $vaga_cnpq_area_fk->setChangeAction($change_area);             
  39.         
  40.         $vaga_cnpq_subarea_fk = new TCombo('vaga_cnpq_subarea_fk');
  41.         $change_subarea = new TAction(array($this'onChangeSubArea'));
  42.         $vaga_cnpq_subarea_fk->setChangeAction($change_subarea);               
  43.         $vaga_cnpq_especialidade_fk = new TCombo('vaga_cnpq_especialidade_fk');
  44.         $row $this->form->addFields
  45.             [ new TLabel('ID'),     $pk_vaga ],
  46.             [ new TLabel('Colegiado'),     $vaga_colegiado_fk ]
  47.             );
  48.         $row->layout = ['col-sm-1''col-sm-5' ];
  49.         $row $this->form->addFields
  50.             [ new TLabel('Motivo da Vacância'),  $vaga_motivo_vacancia ]
  51.             );
  52.         $row->layout = ['col-sm-6',];
  53.         $row $this->form->addFields
  54.             [ new TLabel('Docente Efetivo Substituido'),  $vaga_docente_substituido ]
  55.             );
  56.         $row->layout = ['col-sm-6',];
  57.         $row $this->form->addFields
  58.             [ new TLabel('Quantidade de Vagas'),  $vaga_quantidade ],
  59.             [ new TLabel('Carga Horária'),  $vaga_carga_horaria ]
  60.             );
  61.         $row->layout = ['col-sm-3''col-sm-3'];
  62.         $row $this->form->addFields
  63.             [ new TLabel('Escolaridade Mínima'),  $vaga_escolaridade_fk ]
  64.             );
  65.         $row->layout = ['col-sm-6',];
  66.         $row $this->form->addFields
  67.             [ new TLabel('Cnpq - Grande área'),  $this->vaga_cnpq_grande_area_fk ],
  68.             [ new TLabel('Cnpq - Área'),  $vaga_cnpq_area_fk ]
  69.             );
  70.         $row->layout = ['col-sm-3','col-sm-3'];
  71.         $row $this->form->addFields
  72.             [ new TLabel('Cnpq - Subárea'),  $vaga_cnpq_subarea_fk ],
  73.             [ new TLabel('Cnpq - Especialidade'),  $vaga_cnpq_especialidade_fk ]
  74.             );
  75.         $row->layout = ['col-sm-3','col-sm-3'];
  76.         // *****************************************************
  77.         // FIM PRIMEIRA ABA - VAGA
  78.         // *****************************************************
  79.         $this->form->addAction('Salvar', new TAction(array($this'onSend')), 'fa:check-circle-o green');
  80.         // $this->form->addActionLink('Listagem',  new TAction(['ConcursoListagem', 'onReload']), 'fa:table blue');
  81.         $vbox = new TVBox;
  82.         $vbox->style 'width: 100%';
  83.         $vbox->addTBreadCrumb::create(['Captação de Vaga','Adicionar'],true));
  84.         $vbox->add($this->form);
  85.         parent::add($vbox);
  86.     }
  87.     
  88.     public function onSend($param)
  89.     {
  90.        
  91.     }
  92.     public function onClear($param)
  93.     {
  94.        
  95.     }
  96.     public static function onChangeGrandeArea($param)
  97.     {
  98.         try {
  99.             TTransaction::open('app');
  100.             $cnpq $param['vaga_cnpq_grande_area_fk'];
  101.             $criterio = new TCriteria();
  102.             $criterio->add(new TFilter('pk_cnpq''LIKE'substr($cnpq0,1) . '.%' ));
  103.             $criterio->add(new TFilter('pk_cnpq''LIKE''%.00.00-%' ));
  104.             $criterio->add(new TFilter('pk_cnpq''!='$cnpq ));
  105.             $repository = new TRepository('Cnpq');
  106.             $obj $repository->load($criterio);
  107.             $valores = [];
  108.             foreach ($obj as $o) {
  109.                 $valores[$o->pk_cnpq] = $o->cnpq_nome;
  110.             }
  111.             TCombo::reload('form_captacao''vaga_cnpq_area_fk'$valorestrue);
  112.             TTransaction::close();
  113.         } catch (Exception $e) {
  114.             new TMessage('error'$e->getMessage());                      
  115.         }
  116.     }
  117.     public static function onChangeArea($param)
  118.     {
  119.         try {
  120.             TTransaction::open('app');
  121.             $cnpq = isset($param['vaga_cnpq_area_fk']) ? $param['vaga_cnpq_area_fk'] : '';
  122.             $criterio = new TCriteria();
  123.             $criterio->add(new TFilter('pk_cnpq''LIKE'substr($cnpq0,5) . '%' ));
  124.             $criterio->add(new TFilter('pk_cnpq''LIKE''%00-%' ));
  125.             $criterio->add(new TFilter('pk_cnpq''!='$cnpq ));
  126.   
  127.             $repository = new TRepository('Cnpq');
  128.             $obj $repository->load($criterio);
  129.             $valores = [];
  130.             foreach ($obj as $o) {
  131.                 $valores[$o->pk_cnpq] = $o->cnpq_nome;
  132.             }
  133.             TCombo::reload('form_captacao''vaga_cnpq_subarea_fk'$valorestrue);
  134.             TTransaction::close();
  135.         } catch (Exception $e) {
  136.             new TMessage('error'$e->getMessage());                      
  137.         }
  138.     }
  139.     public static function onChangeSubArea($param)
  140.     {
  141.         try {
  142.             TTransaction::open('app');
  143.             $cnpq = isset($param['vaga_cnpq_area_fk']) ? $param['vaga_cnpq_area_fk'] : '';
  144.             $criterio = new TCriteria();
  145.             $criterio->add(new TFilter('pk_cnpq''LIKE'substr($cnpq0,8) . '%' ));
  146.             $criterio->add(new TFilter('pk_cnpq''!='$cnpq ));
  147.   
  148.             $repository = new TRepository('Cnpq');
  149.             $obj $repository->load($criterio);
  150.             $valores = [];
  151.             foreach ($obj as $o) {
  152.                 $valores[$o->pk_cnpq] = $o->cnpq_nome;
  153.             }
  154.             TCombo::reload('form_captacao''vaga_cnpq_subarea_fk'$valorestrue);
  155.             TTransaction::close();
  156.         } catch (Exception $e) {
  157.             new TMessage('error'$e->getMessage());                      
  158.         }
  159.     }
  160. }
  161. </code>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (6)


FC

Acho que tem haver com o TCombo::reload das funções comente ela e teste.
FK

Mas o TCombo::reload, não é método utilizado para recarregar o Combo com os dados? Se eu retirar qual método utilizo? Eu utilizei o exemplo de https://www.adianti.com.br/framework_files/tutor/index.php?class=FormInteraction
FC

Então as combos são aninhadas certo? então ao passar em cada função ela vai fazer uma requisição ou seja a cada reload por isso está fazendo 3 requisições . É isso mesmo ? testou?
FK

Não fui claro, no inicio, Após selecionar o primeiro combo, ele dispara a ação do segundo combo, e do terceiro e entra em loop, fica gerando novas requisições sem parar.
FK

Resolvido, adicionei um parametro, false, e parou de dar problema: "TCombo::reload('form_captacao', 'vaga_cnpq_especialidade_fk', $valores, true, false);", é referente ao "fire_events", mas não sei o que isso significa.
FK

Em tempo, obrigado pelo apoio.