Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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 ...
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

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

Cógido adaptado na tentativa de carregar TDBMultiSearch
  1. <?php
  2. ----
  3. public static function reloadFromModel($formname$field$database$model$key$value$ordercolumn NULLTCriteria $criteria NULL$startEmpty FALSE)
  4.     {
  5.         TTransaction::open($database);
  6.         
  7.         // creates repository
  8.         $repository = new TRepository($model);
  9.         if (is_null($criteria))
  10.         {
  11.             $criteria = new TCriteria;
  12.         }
  13.         $criteria->setProperty('order', isset($ordercolumn) ? $ordercolumn $key);
  14.         
  15.         // load all objects
  16.         $collection $repository->load($criteriaFALSE);
  17.         
  18.         $items = array();
  19.         // add objects to the combo
  20.         if ($collection)
  21.         {
  22.             foreach ($collection as $object)
  23.             {
  24.                 if (isset($object->$value))
  25.                 {
  26.                     $items[$object->$key] = $object->$value;
  27.                 }
  28.                 else
  29.                 {
  30.                     $items[$object->$key] = $object->render($value);
  31.                 }
  32.             }
  33.         }
  34.         TTransaction::close();
  35.         parent::reload($formname$field$items$startEmpty);
  36.     }
  37. ?>


Views
  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. ?>


  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. ?>


Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (3)


NR

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?
RB

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
RB

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