MD
Acessar objeto associado dentro de um DataGrid
Fechado
Olá!
Novamente tenho uma questão boa... pelo menso acretido que sim...
Tenho um activerecord que trabalha em uma tabela responsavel pelos perfis de usuários:
Há uma outra classe, que gerencia os usuários e que esta associada a classe dos perfis, pois cada usuário tem um perfil.
Se faço o seguinte consigo acesso ao nome do perfil.
Já em um datagrid, quando monto as colunas, faço algo assim e tenho o acesso ao ID normalmente:
Mas, tenho que colocar o perfil do usuário nessa mesma listagem, logo, faço algo assim:
Mas, não tive sucesso, pois esse código sempre retorna null.
Pergunto, há alguma forma de acessar um objeto associado dentro de uma listagem?
Agradeço desde já a atenção.
Novamente tenho uma questão boa... pelo menso acretido que sim...
Tenho um activerecord que trabalha em uma tabela responsavel pelos perfis de usuários:
- <?php
- class Perfil extends TRecord
- {
- const TABLENAME = 'public.perfis_usuarios';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'serial'; // {max, serial}
- /**
- * Constructor method
- */
- public function __construct(506 = NULL)
- {
- parent::__construct(506);
- parent::addAttribute('nome');
- parent::addAttribute('descricao');
- }
- }
- ?>
Há uma outra classe, que gerencia os usuários e que esta associada a classe dos perfis, pois cada usuário tem um perfil.
Se faço o seguinte consigo acesso ao nome do perfil.
- <?php
- TTransaction::open('banco');
- $teste = new Usuario('1');
- echo $teste->perfil->nome;
- TTransaction::close();
- ?>
Já em um datagrid, quando monto as colunas, faço algo assim e tenho o acesso ao ID normalmente:
- <?php
- 506 = new TDataGridColumn('id', 'id', 'right', 10);
- ?>
Mas, tenho que colocar o perfil do usuário nessa mesma listagem, logo, faço algo assim:
- <?php
- 506 = new TDataGridColumn('perfil->nome', 'id', 'right', 10);
- ?>
Mas, não tive sucesso, pois esse código sempre retorna null.
Pergunto, há alguma forma de acessar um objeto associado dentro de uma listagem?
Agradeço desde já a atenção.
Oi Marco,
Você deve criar um método, tipo get_nome_perfil() no Active Record. Já na datagrid, você usa:
Esse método deve retornar o nome do perfil, baseado no ID da pessoa.
No tutor, na Active Record Customer, tem um assim pra retornar o nome da cidade:
Aqui tem um link para o exemplo. Veja aqui que o nome da cidade é obtido por essa técnica.
www.adianti.com.br/doc-framework-Organization-ComplexViews-CustomerD
Acredito que se você ler essa dúvida já resolvida, irá ajudar também:
www.adianti.com.br/forum/pt/view_487?alterar-valor-da-linha-do-datag
abraços!
Pablo