RB
TDBMultiSearch dependente de TDBUniqueSearch
Olá,
Estou tentando criar um TDBMultiSearch dependente de TDBUniqueSearch porém sem sucesso,
Tentei da forma baixo, porém da error: connection failed
segue trecho do código que estou usando
Cógido adaptado na tentativa de carregar TDBMultiSearch
Views
Estou tentando criar um TDBMultiSearch dependente de TDBUniqueSearch porém sem sucesso,
Tentei da forma baixo, porém da error: connection failed
segue trecho do código que estou usando
- <?php
- $filter = new TCriteria;
- $filter->add(new TFilter('id', '=',TSession::getValue('organizacion_id')));
- $filter->add(new TFilter('unidade_id', '=',TSession::getValue('userunitids')));
- $organizacao_id = new TDBUniqueSearch('organizacao_id' ,'centinel','ViewOrganizacaoJuridica','id','nome','nome asc');
- $organizacao_id->setChangeAction( new TAction( array($this, 'onChangeActionUnidade')) );
- $organizacao_id->setMask('{nome}');
- $organizacao_id->setMinLength(2);
- $filter1 = new TCriteria;
- $filter1->add(new TFilter('id', '<','0'));
- $unidade_id = new TDBMultiSearch('unidade_id' ,'centinel','ViewOrganizacaoUnidade','id','nome','nome asc',$filter1);
- $unidade_id->style = 'height:50px;';
- $unidade_id->setMask('{nome}');
- $unidade_id->setMinLength(2);
- ----
- static function onChangeActionUnidade($param)
- {
- try
- {
- TTransaction::open('centinel'); //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'] ] );
- //$formname, $field, $database, $model, $key, $value, $ordercolumn = NULL, TCriteria $criteria = NULL, $startEmpty = FALSE
- TDBMultiSearch::reloadFromModel('frm_grupo_usuario','unidade_id','centinel','ViewOrganizacaoUnidade','id','{nome}','nome',$criteria,TRUE);
- }
- else
- {
- TDBMultiSearch::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());
- }
- }
- ?>
Cógido adaptado na tentativa de carregar TDBMultiSearch
- <?php
- ----
- public static function reloadFromModel($formname, $field, $database, $model, $key, $value, $ordercolumn = NULL, TCriteria $criteria = NULL, $startEmpty = FALSE)
- {
- TTransaction::open($database);
- // creates repository
- $repository = new TRepository($model);
- if (is_null($criteria))
- {
- $criteria = new TCriteria;
- }
- $criteria->setProperty('order', isset($ordercolumn) ? $ordercolumn : $key);
- // load all objects
- $collection = $repository->load($criteria, FALSE);
- $items = array();
- // add objects to the combo
- if ($collection)
- {
- foreach ($collection as $object)
- {
- if (isset($object->$value))
- {
- $items[$object->$key] = $object->$value;
- }
- else
- {
- $items[$object->$key] = $object->render($value);
- }
- }
- }
- TTransaction::close();
- parent::reload($formname, $field, $items, $startEmpty);
- }
- ?>
Views
- <?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');
- }
- }
- ?>
- <?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');
- }
- }
- ?>
O componente multisearch é baseado no select2 da jquery, por isso acredito que não basta copiar a função do componente TDBCombo para funcionar.
Não há possibilidade de usar outro componente?
Nataniel, boa tarde,
Obrigado pelo retorno, então até tem ( TDBCombo ) , eu a questão é que eu quero selecionar mais de um item, porém
Nataniel,
Só recapitulando, pois por algum motivo, não foi postado minha resposta por inteiro.
"Obrigado pelo retorno, então até tem ( TDBCombo ) , eu a questão é que eu quero selecionar mais de um item, porém "
Então até tem ( TDBCombo ) , a questão é que quero selecionar mais de um item, porém sem sucesso pois além de não funcionar, ao tentar utilizar com TDBCombo as informações não carregam na segunda combo.
www.adianti.com.br/forum/pt/view_4070?combo-dependente-nao-carrega