ajuda com campo TDBMultiSearch estou tentando preencher um campo TDBMultiSearch com dados de uma tabela, mas não estou conseguindo, me parece que este campo é array ...
RS
ajuda com campo TDBMultiSearch  
estou tentando preencher um campo TDBMultiSearch com dados de uma tabela, mas não estou conseguindo, me parece que este campo é array

  1. <?php
  2. $obj = new stdClass;
  3.  $obj->id_logradouro = [$endereco->id => $endereco->nome];
  4.  TForm::sendData('form_search_ControleKm'$obj);
  5.             
  6. ?>

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


CN

Criação do campo no form.
$id_exame_complementar = new TDBMultiSearch('id_exame_complementar', 'rms', 'Tbexames', 'id', 'exame');

public function onSave( $param )
{
try
{
TTransaction::open('rms'); // open a transaction

$this->form->validate(); // validate form data
$data = $this->form->getData(); // get form data as array

$object = new Tbatendimentos; // create an empty object

$object->fromArray( (array) $data); // load the object with data

//salva no TDBMultisearch (INICIO)
$campo = '';
foreach($data->id_exame_complementar as $key => $item) {
$campo .= $item . ',';
}
$object->id_exame_complementar = $campo;
//salva no TDBMultisearch (FIM)

$object->store(); // save the object

// get the generated id
$data->id = $object->id;
.........


public function onEdit( $param )
{
try
{
if (isset($param['key']))
{
$key = $param['key']; // get the parameter $key
TTransaction::open('rms'); // open a transaction
$object = new Tbatendimentos($key); // instantiates the Active Record

//TDBMultiSearch
$object->id_exame_complementar = explode(",", $object->id_exame_complementar);

$this->form->setData($object); // fill the form
TTransaction::close(); // close the transaction
}
else
{
$this->form->clear(TRUE);
}
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage()); // shows the exception error message
TTransaction::rollback(); // undo all pending operations
}
}
RS

bom dia Cesar Novaes isso ja estou fazendo e tudo certo, para salvar e pegar para editar, o problema que estou usando um setExitAction e quando sair deste campo jogar valor neste
TDBMultiSearch

  1. <?php
  2.   public static function onChangeLocal($param)
  3.     {
  4.        
  5.          
  6.          
  7.          if (!empty($param['local_id'])){
  8.         
  9.             TTransaction::open('sgo');
  10.          
  11.             $local = new Local($param['local_id']);
  12.             $logradouro_id $local->logradouro_id;
  13.             $endereco = new EsicLogradouros($logradouro_id);
  14.             
  15.     //     var_dump($endereco->id.' '.$endereco->nome);   
  16.             TTransaction::close();
  17.           
  18.             
  19.             $obj = new stdClass;
  20.             
  21.                        
  22.             $obj->bairro strtoupper($local->bairro);
  23.             $obj->cep    $local->cep;
  24.             $obj->id_logradouro = [$endereco->id => $endereco->nome];    //NO CASO AQUI SERIA O TDBMultiSearch  MAS FICA EM BRANCO
  25.             
  26.             TForm::sendData('form_search_ControleKm'$obj);
  27.             
  28.             
  29.          }   
  30.     }
  31. ?>
FR

Olá Robson,

tente substituir a linha:
  1. <?php
  2.      $obj->id_logradouro = [$endereco->id => $endereco->nome];
  3. ?>

por:
  1. <?php
  2.     $obj->id_logradouro $endereco->id;
  3. ?>
RS

deu não, ainda ficou em branco.
CN

Veja no tutor o uso do componente MultiSearch: localhost/tutor/index.php?class=FormEventsView

De repente, pode se aplicar ao seu caso!
RS

tem não, só queria ao selecionar o Local no onChangeAction, pegar o id do logradouro que tem no local e jogar ele no TDBMultiSearch que é o id_logradouro
RS

pelo jeito não tem jeito, mas obrigado pela ajuda, infelizmente.
CN

Robson Sorrilha. Não desista! Aguarde até o final da tarde!
CN

Veja se o relato a seguir, é similar ao seu caso:

Eu tenho:
- tabela de estados (id, nome, sigla);
- tabela de municipios (id, nome, uf_pk);
- tabela de funcionario (.... municipio_pk...)

Sequencia;
1-> cadastrei os estados;
2-> os municípios e, aí, setei por meio do campo uf_pk o estado (RJ, SP etc) ;
3-> e quando vou cadastrar o funcionário, seleciono o município e aqui é legal:

no form cadastro de funcionário, usei o componente TDBUniqueSearch
$municipio_pk = new TDBUniqueSearch('municipio_pk', 'conn', 'Tbmunicipios', 'ibge', 'municipio');

//definir suas propriedades:
$municipio_pk->setMinLength(1);
$municipio_pk->setMask('{municipio} --- ( {tbestados->sigla} )');
$municipio_pk->setOperator('like');

//execução
Quando digito no campo, ele faz a busca do município e mostra da seguinte forma: SALVADOR --- ( BA )
Isso só é possível porque os cadastros e relacionamento já foram feitos antes de cadastrar o município onde o funcionário reside!
ML

Robson,

Você conseguiu solução para o seu caso ? Eu estou com o mesmo prodblema.

Se você puder ajudar eu agradeço.

A pista que eu achei é que parece que o componente TDBMultiSearch não atualiza dentro de uma static function.

Marcelo Lopes

Editado 22/03/2024 (há 6 meses) - Ver alterações