Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Combo dependente não carrega Olá, Estou tenho dois combos no formulário, o segundo é carregado conforme seleção do primeiro, porém o segundo não carrega. Alguem pode me ajudar ? Segue trecho do código. ...
RB
Combo dependente não carrega  
Olá,

Estou tenho dois combos no formulário, o segundo é carregado conforme seleção do primeiro, porém o segundo não carrega.

Alguem pode me ajudar ?

Segue trecho do código.

  1. <?php
  2. //combo 1(master)
  3.         $organizacao_id =  new TDBCombo('organizacao_id' ,'teste','ViewOrganizacaoJuridica','id','nome','nome asc');
  4.         $organizacao_id->setDefaultOption(false);
  5.         $organizacao_id->setChangeAction( new TAction( array($this'onChangeActionUnidade')) );
  6.         $filter1 = new TCriteria;
  7.         $filter1->add(new TFilter('id''<','0'));
  8.         //combo 2 (detail)
  9.         $unidade_id  =  new TDBCombo('unidade_id','teste','ViewOrganizacaoUnidade','id','name','name asc',$filter1);
  10.         $unidade_id->setDefaultOption(false);
  11. .................
  12. static function onChangeActionUnidade($param)
  13.     {
  14.         try
  15.       {
  16.           TTransaction::open('teste'); //base de dados
  17.          if ($param['organizacao_id'])//se existe parâmetro da primeira combo(nome da primeira combo)
  18.            {
  19.              $criteria TCriteria::create( ['organizacao_id' => $param['organizacao_id'] ] );
  20.           //organizacao_id = parametro chave estrangeira da tabela master
  21.           // formname,field(nome do campo),database , nome da model,key,value,ordercolumn = NULL,criteria, startEmpty = FALSE
  22.               TDBCombo::reloadFromModel('frm_grupo_usuario','unidade_id','teste','ViewOrganizacaoUnidade','id','{name}''name',$criteria,TRUE);
  23.           }
  24.           else
  25.           {
  26.             TCombo::clearField('frm_grupo_usuario''unidade_id'); //reload do formulario frm_grupo_usuario na segunda combo "unidade_id"
  27.           }
  28.         TTransaction::close();
  29.         }
  30.         catch (Exception $e)
  31.         {
  32.             new TMessage('error'$e->getMessage());
  33.         }
  34.     }
  35. ?>


Models

  1. <?php
  2. /**
  3.  * ViewOrganizacaoJuridica Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class ViewOrganizacaoJuridica extends TRecord
  7. {
  8.     const TABLENAME 'viewOrganizacaoJuridica';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     /**
  14.      * Constructor method
  15.      */
  16.     public function __construct($id NULL$callObjectLoad TRUE)
  17.     {
  18.         parent::__construct($id$callObjectLoad);
  19.         parent::addAttribute('nome');
  20.         parent::addAttribute('unidade_id');
  21.     }
  22. }
  23. ?>


  1. <?php
  2. /**
  3.  * ViewOrganizacaoUnidade Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class ViewOrganizacaoUnidade extends TRecord
  7. {
  8.     const TABLENAME 'viewOrganizacaoUnidade';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     /**
  14.      * Constructor method
  15.      */
  16.     public function __construct($id NULL$callObjectLoad TRUE)
  17.     {
  18.         parent::__construct($id$callObjectLoad);
  19.         parent::addAttribute('name');
  20.         parent::addAttribute('organizacao_id');
  21.         parent::addAttribute('ativo');
  22.     }
  23. }
  24. ?>


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


NR

Copiei seu código e funcionou sem problemas.

Confira o nome do formulário passado para a função reloadFromModel e também se o filtro executado está retornando dados do banco.
RB

Nataniel,

Sei lá o que acontece, observei ao depurar no navegador que os dados são retornados, porém o combo fica bloqueado para seleção.


  1. <?php
  2. $filter = new TCriteria;
  3.         $filter->add(new TFilter('organization_id''=',TSession::getValue('organizacion_id')));
  4.         //combo 1(master)
  5.         $organizacao_id =  new TDBCombo('organizacao_id' ,'permission','SystemOrganization','id','name','id asc',$filter);
  6.         $organizacao_id->setDefaultOption(false);
  7.         $organizacao_id->setChangeAction( new TAction( array($this'onChangeActionFilial')) );
  8.         $filter1 = new TCriteria;
  9.         $filter1->add(new TFilter('id''<','0'));
  10.         //combo 2 (detail)
  11.         $unidade_id  =  new TDBCombo('unidade_id','permission','SystemUnit','id','name','name asc',$filter1);
  12.         $unidade_id->setDefaultOption(false);
  13. static function onChangeActionFilial($param)
  14.     {
  15.         try
  16.         {
  17.             if ($param['organizacao_id'])//se existe parâmetro da primeira combo(nome da primeira combo)
  18.              {
  19.                $criteria TCriteria::create( ['organization_id' => $param['organizacao_id'] ] );
  20.                 TDBCombo::reloadFromModel('form_grupo_usuario','unidade_id','permission','SystemUnit','id','{name}''name',$criteria,TRUE);
  21.             }
  22.             else
  23.             {
  24.               TCombo::clearField('form_grupo_usuario''unidade_id'); //reload do formulario form_grupo_usuario na segunda combo "unidade_id"
  25.             }
  26.         }
  27.         catch (Exception $e)
  28.         {
  29.             new TMessage('error'$e->getMessage());
  30.         }
  31.     }
  32. ?>


segue link imagem.

sgo.net.br/index.php?class=PublicView&PHPSESSID=3cd74a07131cbd67
RB

Nataniel,

Resovido, adicionei um id no formulário e funcionou

$this->form_grupo->id = 'form_grupo_usuario';