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

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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. if (!empty($param['local_id'])){
  5. TTransaction::open('sgo');
  6. $local = new Local($param['local_id']);
  7. $logradouro_id = $local->logradouro_id;
  8. $endereco = new EsicLogradouros($logradouro_id);
  9. // var_dump($endereco->id.' '.$endereco->nome);
  10. TTransaction::close();
  11. $obj = new stdClass;
  12. $obj->bairro = strtoupper($local->bairro);
  13. $obj->cep = $local->cep;
  14. $obj->id_logradouro = [$endereco->id => $endereco->nome]; //NO CASO AQUI SERIA O TDBMultiSearch MAS FICA EM BRANCO
  15. TForm::sendData('form_search_ControleKm', $obj);
  16. }
  17. }
  18. ?>
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á 1 ano) - Ver alterações