Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Gravar usando TDBMultiSearch Olá! Amigos, não consigo salvar o itens selecionados no campo abaixo. É a primeira vez que uso o componente TDBMultiSearch. $relacao_itens = new TDBMultiSearch('relacao_itens', 'cnn', 'Tbitens', 'id', 'nome'); Desde já, obrigado!...
CN
Gravar usando TDBMultiSearch  
Olá!

Amigos, não consigo salvar o itens selecionados no campo abaixo.
É a primeira vez que uso o componente TDBMultiSearch.

$relacao_itens = new TDBMultiSearch('relacao_itens', 'cnn', 'Tbitens', 'id', 'nome');

Desde já, obrigado!

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


MG

Este componente retorna um array.
Onde vc pretende gravá-lo?
Num único campo ou em uma tabela?
CN

Único campo.
MG

Sugiro utilizar
foreach


Por exemplo
  1. <?php
  2. public function onSave($param)
  3. {
  4.     ...
  5.     $data $this->form->getData();
  6.     $campo '';
  7.     foreach($data->relacao_itens as $key => $item) {
  8.         $campo .= $item ',';
  9.     }
  10.     $obj->campo $campo;
  11.     ...
  12. }
  13. ?>
MG

Ou melhor ainda, usar implode();

$campo = implode("", $data->relacao_itens);
CN

Boa tarde Marcelo!

Está gravando no campo dentro da base de dados!

Abaixo do formulário tem um datagrid. Ao clicar em um dos registros, aparece o erro:

Warning: Invalid argument supplied for foreach() in C:wamp64wwwrmslibadiantiwidgetwrapperTDBMultiSearch.php on line 161

Pergunta: Para EDITAR, é preciso tratar novamente o conteúdo desse componente?
MG

Sim, você precisar transformar o campo em array.
Use agora o explode();
  1. <?php
  2.      $relacao_itens explode(",",$banco_dados->campo);
  3. ?>
CN

Bom dia Marcelo!
Desculpe pela minha ignorância! Não sei como e onde modificar o código, por isso, segue o mesmo segue abaixo.
Antecipadamente, obrigado!

public function onEdit( $param )
{
try
{
if (isset($param['key']))
{
$key = $param['key']; // get the parameter $key
TTransaction::open('cnn'); // open a transaction
$object = new Tbatendimentos($key); // instantiates the Active Record
$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
}
}
MG

Vamos lá:
Primeiro o objeto que será retornado ao forma, os nomes dos campos devem ser os mesmos.
Partindo do pressuposto que o campo se chama "relacao_items", seri assim

  1. <?php
  2. public function onEdit($param)
  3. {
  4.     try {
  5.         ...
  6.         $key $param['key'];
  7.         $object = new Tbatendimentos($key);
  8.         $object->relacao_items explode(",",$object->relacao_item);
  9.         $this->form->setData($object);
  10.         ...
  11.     } catch (Exception $e) {
  12.         ...   
  13.     }
  14. }
  15. ?>