Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Incluir campos novos na tela grupos, na parte de programas No template ERP II, na tabela: system_group_program, eu criei novos campos. Agora queria colocar esse campos no SystemGroupForm na parte do multifield onde aparecem os programas que ja foram selecionados. Os campos eu até consegui colocar na tela, porem acho que tem que alterar alguma coisa nas classes, e ai não obitive sucesso. Na classe SystemGroupProgram eu informei os novos campos, confom...
LC
Incluir campos novos na tela grupos, na parte de programas  
Fechado
No template ERP II, na tabela: system_group_program, eu criei novos campos.
Agora queria colocar esse campos no SystemGroupForm na parte do multifield onde aparecem os programas que ja foram selecionados.
Os campos eu até consegui colocar na tela, porem acho que tem que alterar alguma coisa nas classes, e ai não obitive sucesso.
Na classe SystemGroupProgram eu informei os novos campos, confome abaixo:
  1. <?php
  2. /**
  3.  * System_group_program Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class SystemGroupProgram extends TRecord
  7. {
  8.     const TABLENAME 'system_group_program';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'max'// {max, serial}
  11.     
  12.     /**
  13.      * Constructor method
  14.      */
  15.     public function __construct(1132 NULL)
  16.     {
  17.         parent::__construct(1132);
  18.         parent::addAttribute('system_group_id');
  19.         parent::addAttribute('system_program_id');
  20.         
  21.         // novos campos
  22.         parent::addAttribute('incluir');
  23.         parent::addAttribute('modificar');
  24.         parent::addAttribute('excluir');
  25.     }
  26. }
  27. ?>


Agora eu acho que tem que ajustar a classe SystemGroup, nesses dois metodos abaixo, mais não sei como.
  1. <?php
  2.     /**
  3.      * Load the object and its aggregates
  4.      * @param 1132 object ID
  5.      */
  6.     public function load(1132)
  7.     {
  8.         // load the related System_program objects
  9.         $repository = new TRepository('SystemGroupProgram');
  10.         $criteria = new TCriteria;
  11.         $criteria->add(new TFilter('system_group_id''='1132));
  12.         $system_group_system_programs $repository->load($criteria);
  13.         if ($system_group_system_programs)
  14.         {
  15.             foreach ($system_group_system_programs as $system_group_system_program)
  16.             {
  17.                 $system_program = new SystemProgram$system_group_system_program->system_program_id );
  18.                 $this->addSystemProgram($system_program);
  19.             }
  20.         }
  21.     
  22.         // load the object itself
  23.         return parent::load(1132);
  24.     }
  25.     /**
  26.      * Store the object and its aggregates
  27.      */
  28.     public function store()
  29.     {
  30.         // store the object itself
  31.         parent::store();
  32.     
  33.         // delete the related System_groupSystem_program objects
  34.         $criteria = new TCriteria;
  35.         $criteria->add(new TFilter('system_group_id''='$this->id));
  36.         $repository = new TRepository('SystemGroupProgram');
  37.         $repository->delete($criteria);
  38.         // store the related System_groupSystem_program objects
  39.         if ($this->system_programs)
  40.         {
  41.             foreach ($this->system_programs as $system_program)
  42.             {
  43.                 $system_group_system_program = new SystemGroupProgram;
  44.                 $system_group_system_program->system_program_id $system_program->id;
  45.                 $system_group_system_program->system_group_id $this->id;
  46.                 $system_group_system_program->store();
  47.             }
  48.         }
  49.     }
  50. ?>

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


LC

Acho que aqui tenho que mudar o relacionamento para composição.
PD

Sim,

SystemGroupProgram original foi pensada somente para fazer a ligação entre grupo e programa, nada mais.
Originalmente é uma agregação. Se tiver atributos próprios, acredito que terá de reescrever para composição.

Att,
Pablo
LC

Pablo, no TMultiField, conseguimos mudar um campo com o SetTransform, tipo campo na base é 1=Sim ou 0=Não ?
Ou tem que usar com datagrid ?
LC

Pablo, me da mais uma dica, eu troquei:
  1. <?php
  2.     public function load($id)
  3.     {
  4.         // load the related System_program objects
  5.         $repository = new TRepository('SystemGroupProgram');
  6.         $criteria = new TCriteria;
  7.         $criteria->add(new TFilter('system_group_id''='$id));
  8.         $system_group_system_programs $repository->load($criteria);
  9.         if ($system_group_system_programs)
  10.         {
  11.             foreach ($system_group_system_programs as $system_group_system_program)
  12.             {
  13.                 $system_program = new SystemProgram$system_group_system_program->system_program_id );
  14.                 $this->addSystemProgram($system_program);
  15.             }
  16.         }
  17.     
  18.         // load the object itself
  19.         return parent::load($id);
  20.     }
  21.  ?>

para:
  1. <?php
  2.    public function load($id)
  3.     {
  4.         // carregar os objectos relacionados System_program
  5.         $this->system_programs parent::loadComposite('SystemGroupProgram''system_group_id'$id);
  6.         // load the object itself
  7.         return parent::load($id);
  8.     }
  9. ?>


Agora não habilita os programas que estão no grupo em que o usuário faz parte.
PD

Leandro,

TMultiField não tem método setTransformer().

Quanto à segunda dúvida, o loadComposite vai carregar objetos do tipo SystemGroupProgram.
Mas o que é necessário ter em system_programs são objetos do tipo SystemProgram, como estava antes.

Att,