Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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á 26 dias) - Ver alterações