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.
Models
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.
- <?php
- //combo 1(master)
- $organizacao_id = new TDBCombo('organizacao_id' ,'teste','ViewOrganizacaoJuridica','id','nome','nome asc');
- $organizacao_id->setDefaultOption(false);
- $organizacao_id->setChangeAction( new TAction( array($this, 'onChangeActionUnidade')) );
- $filter1 = new TCriteria;
- $filter1->add(new TFilter('id', '<','0'));
- //combo 2 (detail)
- $unidade_id = new TDBCombo('unidade_id','teste','ViewOrganizacaoUnidade','id','name','name asc',$filter1);
- $unidade_id->setDefaultOption(false);
- .................
- static function onChangeActionUnidade($param)
- {
- try
- {
- TTransaction::open('teste'); //base de dados
- if ($param['organizacao_id'])//se existe parâmetro da primeira combo(nome da primeira combo)
- {
- $criteria = TCriteria::create( ['organizacao_id' => $param['organizacao_id'] ] );
- //organizacao_id = parametro chave estrangeira da tabela master
- // formname,field(nome do campo),database , nome da model,key,value,ordercolumn = NULL,criteria, startEmpty = FALSE
- TDBCombo::reloadFromModel('frm_grupo_usuario','unidade_id','teste','ViewOrganizacaoUnidade','id','{name}', 'name',$criteria,TRUE);
- }
- else
- {
- TCombo::clearField('frm_grupo_usuario', 'unidade_id'); //reload do formulario frm_grupo_usuario na segunda combo "unidade_id"
- }
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- ?>
Models
- <?php
- /**
- * ViewOrganizacaoJuridica Active Record
- * @author <your-name-here>
- */
- class ViewOrganizacaoJuridica extends TRecord
- {
- const TABLENAME = 'viewOrganizacaoJuridica';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'serial'; // {max, serial}
- /**
- * Constructor method
- */
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('nome');
- parent::addAttribute('unidade_id');
- }
- }
- ?>
- <?php
- /**
- * ViewOrganizacaoUnidade Active Record
- * @author <your-name-here>
- */
- class ViewOrganizacaoUnidade extends TRecord
- {
- const TABLENAME = 'viewOrganizacaoUnidade';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'serial'; // {max, serial}
- /**
- * Constructor method
- */
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('name');
- parent::addAttribute('organizacao_id');
- parent::addAttribute('ativo');
- }
- }
- ?>
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.
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.
segue link imagem.
sgo.net.br/index.php?class=PublicView&PHPSESSID=3cd74a07131cbd67
Nataniel,
Resovido, adicionei um id no formulário e funcionou
$this->form_grupo->id = 'form_grupo_usuario';