FW
Traduzir ID por outra coisa no onReload()
Fechado
Prezados,
Gostaria de uma ajuda, acredito que seja bastante simples.
Sou programador por necessidade e ainda estou aprendendo mais sobre o framework.
Tenho um GRID, que apresenta algumas informações bastante simples, porém tenho alguns IDs que preciso traduzir, e adicionar uma coluna a mais, que seria um campo calculado, tipo Data Volta + 5, por exemplo.
Meus campos:
Preciso a partir do ORIGEM_ID buscar o nome da cidade que se refere ao ID.
Na classe de modelo, tenho a função para realizar isto.
A questão é, como faço para fazer isto na hora que estou preenchendo o GRID, em vez do ID, adicionar o nome da cidade??
Achei uma alternativa no foreach, mas não creio que seja a maneira correta:
Como poderia fazer isto?? E adicionar uma coluna a mais?
Obrigado desde já.
Gostaria de uma ajuda, acredito que seja bastante simples.
Sou programador por necessidade e ainda estou aprendendo mais sobre o framework.
Tenho um GRID, que apresenta algumas informações bastante simples, porém tenho alguns IDs que preciso traduzir, e adicionar uma coluna a mais, que seria um campo calculado, tipo Data Volta + 5, por exemplo.
Meus campos:
- <?php
- $this->datagrid->addQuickColumn('Id', 'id_viagem', 'center', 40);
- $this->datagrid->addQuickColumn('Data Ida', 'dt_ida', 'center', 80);
- $this->datagrid->addQuickColumn('Data Volta', 'dt_volta', 'center', 80);
- $this->datagrid->addQuickColumn('Colaborador', 'colaborador_id', 'center', 50);
- $this->datagrid->addQuickColumn('Origem', 'origem_id', 'center', 50);
- ?>
Preciso a partir do ORIGEM_ID buscar o nome da cidade que se refere ao ID.
Na classe de modelo, tenho a função para realizar isto.
- <?php
- public function get_city_name_origem()
- {
- if (empty($this->city_o))
- {
- $this->city_o = new City($this->origem_id);
- }
- return $this->city_o->nome;
- }
- ?>
A questão é, como faço para fazer isto na hora que estou preenchendo o GRID, em vez do ID, adicionar o nome da cidade??
- <?php
- public function onReload($param = NULL)
- {
- try
- {
- // open a transaction with database 'permission'
- TTransaction::open('gestao_viagens');
-
- $repository = new TRepository('SolicitaViagem');
- $criteria = new TCriteria;
- $objects = $repository->load( $criteria );
-
- $this->datagrid->clear();
-
- if($objects)
- {
- foreach($objects as $object)
- {
- $this->datagrid->addItem($object);
- }
- }
-
- // close the transaction
- TTransaction::close();
-
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- }
-
- $this->loaded = TRUE;
- }
- ?>
Achei uma alternativa no foreach, mas não creio que seja a maneira correta:
- <?php
- foreach($objects as $object)
- {
- $object->origem_id = $object->get_city_name_origem();
- $this->datagrid->addItem($object);
- }
- ?>
Como poderia fazer isto?? E adicionar uma coluna a mais?
Obrigado desde já.
Nataniel, obrigado pela ajuda...
Simples assim... Ainda tenho muito que aprender.
E quanto a adicionar uma coluna nova? Com um campo calculado? Como eu faria neste caso?
Obrigado.
Fernando, o que é ser um programador por necessidade?
Fernando, o que é ser um programador por necessidade?
João.
Programador por necessidade, no meu caso pelo menos, tentarei contextualizar.
Trabalho com dados, e coleto estes dados várias fontes/processos, para N fins diferentes.
Porém alguns destes processos são falhos e me geram dados poluídos, que tenho um enorme esforço para padronizar. Como não tenho um programador na área, e nem deveria ter neste caso, por minha pró-atividade, e necessidade, desenvolvo alguns sisteminhas para automatizar alguns processos de áreas distintas. Assim estas áreas utilizando estes pequenos sistemas me geram dados limpos, além de ter um ganho de performance para eles que trabalham principalmente com Excel.
Neste sentido, sou um programador por necessidade, não é minha área de atuação nem função, mas mesmo assim faço para ganho de performance e meu benefício.
Tratando do meu problema, consegui adicionar a coluna calculada seguindo a mesma lógica que o Nataniel passou.