Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Ajuda com MultField Alguem poderia me ajudar com MultField? quero carregar uns dados relacionados para uma MultField, tipo? Um titular(Mestre) -> equipamentos(Detalhe), ou seja todos equipamentos do titular no MultField. Não sei se está claro, mas estou precisando desta ajuda...
MO
Ajuda com MultField  
Alguem poderia me ajudar com MultField?

quero carregar uns dados relacionados para uma MultField, tipo?

Um titular(Mestre) -> equipamentos(Detalhe), ou seja todos equipamentos do titular no MultField.
Não sei se está claro, mas estou precisando desta ajuda

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


NR

Marcos, basicamente você deve passar para a multifield um array de objetos:
  1. <?php
  2. //function onEdit
  3. $object = new Titular($key);
  4. // supondo que o nome da multifield seja equipamentos e que haja o relacionamento entre os models
  5. $object->equipamentos $object->getEquipamentos();
  6. $this->form->setData($object);
  7. ?>
MO

É isso mesmo, mas só mais um detalhe, ele manda o id e o código do equipamento, como eu adiciono tb o nome daquele equipamento?
NR

É só adicionar esse campo à sua multifield:
  1. <?php
  2. // supondo que o nome da coluna seja nome
  3. $multifield->addField('nome',_t('Nome'), new TEntry('nome'), 350);
  4. ?>
MO

Bom talvez eu não tenha explicado corretamente, mas assim, no exemplo abaixo ele traz o Id, id_equipamento, gostaria que ele pudesse também trazer o nome do equipamento, que está em outra tabela chamada tp_equipamento, daí eu não sei onde chamar o nome no exemplo abaixo:

  1. <?php
  2. //function onEdit
  3. $object = new Titular($key);
  4. // supondo que o nome da multifield seja equipamentos e que haja o relacionamento entre os models
  5. $object->equipamentos $object->getEquipamentos();
  6. $this->form->setData($object);
  7. ?>
NR

Você precisa criar um método no model Equipamentos para retornar o nome:
  1. <?php
  2. function get_nome_equipamento()
  3. {
  4.     $tpEqp = new TpEquipamento($this->tp_equipamento_id);
  5.     return $tpEqp->nome;
  6. }
  7. ?>

No control, adicione um campo chamado nome_equipamento à multifield:
  1. <?php
  2. $multifield->addField('nome_equipamento','Nome', new TEntry('nome'), 350);
  3. ?>
MO

Eu fiz conforme vc. me descreveu e deu o seguinte erro:

Sem transação ativa com a base de dados: AdiantiDatabaseTRecord::load tp_equipamento

File: libadiantidatabaseTRecord.php : 46
AdiantiDatabaseTRecord->load(1)
File: appmodelTpEquipamento.class.php : 18
AdiantiDatabaseTRecord->__construct(1,1)
File: appmodelEquipamento.class.php : 59
TpEquipamento->__construct(1)
File: :
Equipamento->get_nome_equip()
File: libadiantidatabaseTRecord.php : 85
call_user_func(Equipamento,get_nome_equip)
File: libadiantiwidgetformTMultiField.php : 406
AdiantiDatabaseTRecord->__get(nome_equip)
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWidgetFormTMultiField->show()
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWidgetBaseTElement->show()
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWidgetBaseTElement->show()
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWidgetBaseTElement->show()
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWidgetBaseTElement->show()
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWidgetBaseTElement->show()
File: libadiantiwrapperBootstrapNotebookWrapper.php : 59
AdiantiWidgetBaseTElement->show()
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWrapperBootstrapNotebookWrapper->show()
File: libadiantiwidgetformTForm.php : 408
AdiantiWidgetBaseTElement->show()
File: libadiantiwidgetbaseTElement.php : 281
AdiantiWidgetFormTForm->show()
File: libadianticontrolTPage.php : 215
AdiantiWidgetBaseTElement->show()
File: libadianticoreAdiantiCoreApplication.php : 53
AdiantiControlTPage->show(TitularMestreDetalheForm,onEdit,1,1)
File: engine.php : 20
AdiantiCoreAdiantiCoreApplication::run(1)
File: engine.php : 39
TApplication::run(1)
MO

Consegui...

Modelo Equipamento:

  1. <?php
  2. /**
  3.  * Equipamento Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class Equipamento extends TRecord
  7. {
  8.     const TABLENAME 'equipamento';
  9.     const PRIMARYKEY'id_equipamento';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     private $tp_equipamento;
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct($id NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct($id$callObjectLoad);
  20.         parent::addAttribute('titular_id');
  21.         parent::addAttribute('tp_equipamento_id');
  22.     }
  23.     
  24.     /**
  25.      * Method set_tp_equipamento
  26.      * Sample of usage: $equipamento->tp_equipamento = $object;
  27.      * @param $object Instance of TpEquipamento
  28.      */
  29.     public function set_tp_equipamento(TpEquipamento $object)
  30.     {
  31.         $this->tp_equipamento $object;
  32.         $this->tp_equipamento_id $object->id;
  33.     }
  34.     
  35.     /**
  36.      * Method get_tp_equipamento
  37.      * Sample of usage: $equipamento->tp_equipamento->attribute;
  38.      * @returns TpEquipamento instance
  39.      */
  40.     public function get_tp_equipamento()
  41.     {
  42.         // loads the associated object
  43.         if (empty($this->tp_equipamento))
  44.             $this->tp_equipamento = new TpEquipamento($this->tp_equipamento_id);
  45.     
  46.         // returns the associated object
  47.         return $this->tp_equipamento;
  48.     }
  49.     
  50.     /**
  51.      * Method get_nome_equip
  52.      * Sample of usage: $equipamento->tp_equipamento->attribute;
  53.      * @returns TpEquipamento instance
  54.      */
  55.      function get_nome_equip()
  56.      {
  57.          if (empty($this->equipamento)) 
  58.          $this->equipamento = new TpEquipamento($this->tp_equipamento_id);
  59.          return $this->equipamento->nome_equip;
  60.      }
  61.     
  62. }
  63. Modelo TpEquipamento:
  1. <?php
  2. /**
  3.  * TpEquipamento Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class TpEquipamento extends TRecord
  7. {
  8.     const TABLENAME 'tp_equipamento';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     
  12.     
  13.     /**
  14.      * Constructor method
  15.      */
  16.     public function __construct($id NULL$callObjectLoad TRUE)
  17.     {
  18.         parent::__construct($id$callObjectLoad);
  19.         parent::addAttribute('nome_equip');
  20.     }
  21. }
  22. e no controler
  23.         // criando o Multifield
  24.         $multifield = new TMultiField('equipamentos');
  25.         $multifield->setOrientation('horizontal');
  26.         
  27.         $multifield->setHeight(300);
  28.         $multifield->addField('id_equipamento','',$id_equipamento,80,FALSE);
  29.         $multifield->addField('tp_equipamento_id''Cód.Equip: ',  $tp_equipamento_id80TRUE);
  30.         $multifield->addField('nome_equip','Equipamento'$equipamento260TRUE);
  31. Muitíssimo obrigado pela ajuda Nataniel Rabaiolivcé o cara!!!