Como usar método (get_attribute()) no popover da TDataGrid No DataGrid (listagem) temos a opção de ativar o popover do bootstrap css Tudo que estiver dentro de {} será substituído pelos atributos do model escolhido, porém ele não funciona pa...
AM
Como usar método (get_attribute()) no popover da TDataGrid  
Fechado
No DataGrid (listagem) temos a opção de ativar o popover do bootstrap css

 
  1. <?php $this->datagrid = new TQuickGrid;
  2. $this->datagrid->enablePopover('Informações:', "responsavel: <b> {responsavel} </b><br> ajudante: <b> {ajudante} </b><br><b>{ocorrencia}</b>");
  3. ?>


Tudo que estiver dentro de {} será substituído pelos atributos do model escolhido,
porém ele não funciona para atributos do tipo get_ exemplo: get_cidade_nome();

Se na sua classe modelo tiver um atributo gerado artificialmente pelo método get_
o popover não o reconhece.

 
  1. <?php $this->datagrid = new TQuickGrid;
  2. $this->datagrid->enablePopover('Informações:', "cidade: <b> {cidade_nome} </b><br> estado: <b> {estado_nome} </b><br><b>{ocorrencia}</b>");
  3. //método da classe modelo para exibir nome de cidade
  4. public function get_cidade_nome()
  5. {
  6. if(empty($this->cidade))
  7. {
  8. $this->cidade = new Cidade($this->cidade_id);
  9. }
  10. return $this->cidade->nome;
  11. }
  12. ?>


Estou fazendo da forma correta?



Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


PD

Oi Anderson,

Não trata-se de um Bug, a versão 3.0.0 implementa somente a substituição de atributos simples, resultantes de um toArray() sobre o objeto. Não fez parte do escopo da versão 3.0.0 este recurso, portanto não é um Bug, mas sim uma feature não implementada.

Mas implementei aqui rapidinho para você, e já vou integrar no código para a próxima verão. Altere a classe TDataGrid, acrescentando as seguintes linhas logo após o final da execução do ...foreach ($data as $property => $value).....

 
  1. <?php
  2. // replace methods
  3. $methods = get_class_methods($object);
  4. if ($methods)
  5. {
  6. foreach ($methods as $method)
  7. {
  8. if (stristr($popcontent, "{$method}()") !== FALSE)
  9. {
  10. $popcontent = str_replace('{'.$method.'()}', $object->$method(), $popcontent);
  11. }
  12. }
  13. }
  14. ?>


Depois para chamar:
 
  1. <?php
  2. $this->datagrid->enablePopover('title', 'Oi {name}, cidade {get_city_name()}');
  3. ?>


Acabei de testar no exemplo do tutor (CustomerDataGridView), e funcionou adequadamente.

Att,
Pablo
PD

Ops, o 'Oi Pablo...' não era para ter saído assim, foi o próprio fórum que substituiu o campo name da postagem :-D hehehehe
AM

Muito obrigado Pablo, implementei aqui e já esta funcionando perfeitamente :D