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.
- <?php
- // use wfp\wfpwidgets\WFPNotification;
- class CaptacaoFormulario extends TPage
- {
- private $form;
- public function __construct()
- {
- parent::__construct();
- $this->form = new BootstrapFormBuilder('form_captacao');
- $this->form->setFormTitle('Captação de Vagas');
- $this->form->setFieldSizes('100%');
- // *****************************************************
- // PRIMEIRA ABA - VAGA
- // *****************************************************
- $this->form->appendPage('Vaga');
- $pk_vaga = new TEntry('pk_concurso');
- $pk_vaga->setEditable(FALSE);
- $criterio = new TCriteria();
- $criterio->add(new TFilter('centro_usuario_fk', '=', TSession::getValue('userid') ));
- $vaga_colegiado_fk = new TDBCombo('vaga_colegiado_fk', 'app', 'ViewColegiadoCentroCampus', 'pk_colegiado', '{colegiado_nome} / {centro_nome} / {campus_nome}', null, $criterio);
- $vaga_motivo_vacancia = new TText('vaga_motivo_vacancia');
- $vaga_docente_substituido = new TEntry('vaga_docente_substituido');
- $vaga_quantidade = new TSpinner('vaga_quantidade');
- $vaga_quantidade->setRange(1,10, 1);
- $vaga_carga_horaria = new TCombo('carga_horaria');
- $vaga_carga_horaria->addItems(['T-10'=>'T-10','T-20'=>'T-20','T-40'=>'T-40',]);
- $vaga_escolaridade_fk = new TDBCombo('vaga_escolaridade_fk', 'app', 'Escolaridade', 'pk_escolaridade', 'escolaridade_nome');
- $criterio = new TCriteria();
- $criterio->add(new TFilter('pk_cnpq', 'LIKE', '%00.00.00%' ));
- $this->vaga_cnpq_grande_area_fk = new TDBCombo('vaga_cnpq_grande_area_fk', 'app', 'Cnpq', 'pk_cnpq', 'cnpq_nome', null, $criterio);
- $change_grande_area = new TAction(array($this, 'onChangeGrandeArea'));
- $this->vaga_cnpq_grande_area_fk->setChangeAction($change_grande_area);
- $vaga_cnpq_area_fk = new TCombo('vaga_cnpq_area_fk');
- $change_area = new TAction(array($this, 'onChangeArea'));
- $vaga_cnpq_area_fk->setChangeAction($change_area);
- $vaga_cnpq_subarea_fk = new TCombo('vaga_cnpq_subarea_fk');
- $change_subarea = new TAction(array($this, 'onChangeSubArea'));
- $vaga_cnpq_subarea_fk->setChangeAction($change_subarea);
- $vaga_cnpq_especialidade_fk = new TCombo('vaga_cnpq_especialidade_fk');
- $row = $this->form->addFields(
- [ new TLabel('ID'), $pk_vaga ],
- [ new TLabel('Colegiado'), $vaga_colegiado_fk ]
- );
- $row->layout = ['col-sm-1', 'col-sm-5' ];
- $row = $this->form->addFields(
- [ new TLabel('Motivo da Vacância'), $vaga_motivo_vacancia ]
- );
- $row->layout = ['col-sm-6',];
- $row = $this->form->addFields(
- [ new TLabel('Docente Efetivo Substituido'), $vaga_docente_substituido ]
- );
- $row->layout = ['col-sm-6',];
- $row = $this->form->addFields(
- [ new TLabel('Quantidade de Vagas'), $vaga_quantidade ],
- [ new TLabel('Carga Horária'), $vaga_carga_horaria ]
- );
- $row->layout = ['col-sm-3', 'col-sm-3'];
- $row = $this->form->addFields(
- [ new TLabel('Escolaridade Mínima'), $vaga_escolaridade_fk ]
- );
- $row->layout = ['col-sm-6',];
- $row = $this->form->addFields(
- [ new TLabel('Cnpq - Grande área'), $this->vaga_cnpq_grande_area_fk ],
- [ new TLabel('Cnpq - Área'), $vaga_cnpq_area_fk ]
- );
- $row->layout = ['col-sm-3','col-sm-3'];
- $row = $this->form->addFields(
- [ new TLabel('Cnpq - Subárea'), $vaga_cnpq_subarea_fk ],
- [ new TLabel('Cnpq - Especialidade'), $vaga_cnpq_especialidade_fk ]
- );
- $row->layout = ['col-sm-3','col-sm-3'];
- // *****************************************************
- // FIM PRIMEIRA ABA - VAGA
- // *****************************************************
- $this->form->addAction('Salvar', new TAction(array($this, 'onSend')), 'fa:check-circle-o green');
- // $this->form->addActionLink('Listagem', new TAction(['ConcursoListagem', 'onReload']), 'fa:table blue');
- $vbox = new TVBox;
- $vbox->style = 'width: 100%';
- $vbox->add( TBreadCrumb::create(['Captação de Vaga','Adicionar'],true));
- $vbox->add($this->form);
- parent::add($vbox);
- }
- public function onSend($param)
- {
- }
- public function onClear($param)
- {
- }
- public static function onChangeGrandeArea($param)
- {
- try {
- TTransaction::open('app');
- $cnpq = $param['vaga_cnpq_grande_area_fk'];
- $criterio = new TCriteria();
- $criterio->add(new TFilter('pk_cnpq', 'LIKE', substr($cnpq, 0,1) . '.%' ));
- $criterio->add(new TFilter('pk_cnpq', 'LIKE', '%.00.00-%' ));
- $criterio->add(new TFilter('pk_cnpq', '!=', $cnpq ));
- $repository = new TRepository('Cnpq');
- $obj = $repository->load($criterio);
- $valores = [];
- foreach ($obj as $o) {
- $valores[$o->pk_cnpq] = $o->cnpq_nome;
- }
- TCombo::reload('form_captacao', 'vaga_cnpq_area_fk', $valores, true);
- TTransaction::close();
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- }
- }
- public static function onChangeArea($param)
- {
- try {
- TTransaction::open('app');
- $cnpq = isset($param['vaga_cnpq_area_fk']) ? $param['vaga_cnpq_area_fk'] : '';
- $criterio = new TCriteria();
- $criterio->add(new TFilter('pk_cnpq', 'LIKE', substr($cnpq, 0,5) . '%' ));
- $criterio->add(new TFilter('pk_cnpq', 'LIKE', '%00-%' ));
- $criterio->add(new TFilter('pk_cnpq', '!=', $cnpq ));
- $repository = new TRepository('Cnpq');
- $obj = $repository->load($criterio);
- $valores = [];
- foreach ($obj as $o) {
- $valores[$o->pk_cnpq] = $o->cnpq_nome;
- }
- TCombo::reload('form_captacao', 'vaga_cnpq_subarea_fk', $valores, true);
- TTransaction::close();
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- }
- }
- public static function onChangeSubArea($param)
- {
- try {
- TTransaction::open('app');
- $cnpq = isset($param['vaga_cnpq_area_fk']) ? $param['vaga_cnpq_area_fk'] : '';
- $criterio = new TCriteria();
- $criterio->add(new TFilter('pk_cnpq', 'LIKE', substr($cnpq, 0,8) . '%' ));
- $criterio->add(new TFilter('pk_cnpq', '!=', $cnpq ));
- $repository = new TRepository('Cnpq');
- $obj = $repository->load($criterio);
- $valores = [];
- foreach ($obj as $o) {
- $valores[$o->pk_cnpq] = $o->cnpq_nome;
- }
- TCombo::reload('form_captacao', 'vaga_cnpq_subarea_fk', $valores, true);
- TTransaction::close();
- } catch (Exception $e) {
- new TMessage('error', $e->getMessage());
- }
- }
- }
- </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
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4
Quero me inscrever agora!
Acho que tem haver com o TCombo::reload das funções comente ela e teste.
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
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?
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.
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.
Em tempo, obrigado pelo apoio.