Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Completion Olá pessoal, Nessa semana eu havia perguntado como usar o método setCompletion carregando arquivos do banco de dados. O Ademilson me ajudou e deu a dica certa, pena que não sei como apaguei a pergunta e a resposta aqui do forum :( Bom vamos lá, agora eu preciso esconder o id que aparece no array que vem junto no setCompletion. Exemplo eu preciso pegar o id e o nome mas o id não precisa s...
A
Completion  
Fechado
Olá pessoal,
Nessa semana eu havia perguntado como usar o método setCompletion carregando arquivos do banco de dados. O Ademilson me ajudou e deu a dica certa, pena que não sei como apaguei a pergunta e a resposta aqui do forum :(
Bom vamos lá, agora eu preciso esconder o id que aparece no array que vem junto no setCompletion.

Exemplo eu preciso pegar o id e o nome mas o id não precisa ser apresentado na lista de array, somente a string nome, mas preciso do id para gravar ele no banco.

Abaixo a function da minha classe model
  1. <?php
  2. public function getNomeAutor()
  3.     {
  4.         $autor = new TRepository('Autor');
  5.         
  6.         $autores $autor->load();
  7.         $nomesAutores = array();
  8.         
  9.         $i 0
  10.         
  11.         if ($autores)
  12.         {    
  13.             foreach ($autores as $autor)
  14.             {          
  15.                 $nomesAutores[$i] = $autor->id." - ".$autor->nome;
  16.                 $i $i 1;    
  17.             }
  18.         }
  19.         
  20.         return $nomesAutores;    
  21.     }
  22. ?>


abaixo classe control onde uso o setCompletion

  1. <?php
  2.         
  3.         $object = new Autor();
  4.         $autocomplete->setCompletion(($object->getNomeAutor()));
  5. ?>


Veja que no arquivo em anexo, no campo TEntry Autor, eu exibo o código junto com o nome.
Resumindo eu preciso exibir só o nome mas preciso do id para gravar no banco. Tem como fazer isso?

Obs: Tentei usar o classe THidden para esconder o id mas não funcionou.
Muito obrigado.
Elvis



Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (3)


AN

Olá Elvis,
Por que não deu certo com o THidden? Eu ando sem tempo para codificar com o Adianti, estou tomado de trabalho com meu PDV. Mas eu tentaria fazer mais ou menos assim:
Eu retornaria para o campo TEntry apenas a "Descrição" do autor e jogaria o ID dele para um campo THidden. Em seguida usaria o método exitAction para atualizar o ID do Autor. Foi isso que tentou fazer?
Se for algo muito recorrente em seu projeto sugiro que reescreva a Classe TEntry criando um novo componente, como uma reescrita de módulo comummente praticada por usuários de CMS como Joomla por exemplo. Porém você poderia fazer isso com TEntry ou mesmo implementando um novo Componente para dar a condição de SetCompletion no TCombo seria uma ótima contribuição :D.
Também existe a possibilidade de tratar este requisito em seu controller (caso este requisito venha a ser utilizado apenas neste form, se for precisar estender seu uso durante o projeto, creio que o melhor é criar um componente com estas características, poderia usar TElement para implementar a "list" do Html5 no controller do seu Form.

www.w3schools.com/tags/tryit.asp?filename=tryhtml5_datalist

Leita o código que postei no link, vai abrir algumas idéias para você.

Att,

Ademilson Nunes
A

Olá Ademilson,
Bom acho que não estou usando a classe THidden corretamente, pois estou recebendo a mensagem de erro: "objeto da classe THidden não pôde ser convertido para string".
As vezes sofro um pouquinho pq trabalho com uma linguagem totalmente estrutural (Cobol/Cics/Db2) talvez por isso as vezes encontro algumas dificuldades no meu projeto rs. Eu vou pular esta etapa, vou continuar desenvolvendo o que eu tinha planejado e depois volto para esta parte de tentar inibir o código do autor.
De qualquer maneira muito obrigado.
Valeu =)
Abraço
PD

Oi Elvis,

Essa mensagem "não pode ser convertido para string" é exibida às vezes quando tentamos concatenar um objeto com uma string, ou colocá-lo no meio de uma string. Veja se você não está tentando fazer isso em algum lugar.

A ideia do Ademilson é bem interessante: usar o evento de saída (setExitAction) para quebrar o código e o nome.

Anotei para elaborar um componente para isso na próxima versão.

abs,
Pablo