RK
Populando Datagrid dentro de um View
Bom dia pessoal, estou com a seguinte dificuldade:
Estou tentando carregar uma datagrid dentro de um View. Seria um form populado que deveria carregar o histórico de observações em uma aba appendPage do objeto carregado.
Ele está montando e exibindo a estrutura, porém não estou conseguindo exibir os registros das observações, que está desta forma:
este é o codigo do view
este é o código do model
o model da classe ProdutosObs
Eu fazia isso de uma forma diferente, mas acho muito trabalhoso (foreach em divs no TTextDisplay)
Acredito que estou chamando de forma errada porém não consigo ver.
Caso alguém tenha alguma sugestão agradeço.
abs
Rafael Koller
Estou tentando carregar uma datagrid dentro de um View. Seria um form populado que deveria carregar o histórico de observações em uma aba appendPage do objeto carregado.
Ele está montando e exibindo a estrutura, porém não estou conseguindo exibir os registros das observações, que está desta forma:
este é o codigo do view
- <?php
- $this->form->appendPage("Observações");
- $this->form->addContent([new TFormSeparator("Observações do Produto", '#333333', '18', '#eeeeee')]);
- // datagrid observaçoes
- $this->datagridobs = new BootstrapDatagridWrapper(new TDataGrid);
- $this->datagridobs->width = '100%';
- $this->datagridobs->addColumn( new TDataGridColumn('observacoes->user->name', 'Usuário', 'left', '25%') );
- $this->datagridobs->addColumn( new TDataGridColumn('observacoes->datahorabr', 'Data/Hora', 'left', '15%') );
- $this->datagridobs->addColumn( new TDataGridColumn('observacoes->obs', 'Obs', 'left', '60%') );
- $this->datagridobs->createModel();
- $this->pageNavigationobs = new TPageNavigation;
- $this->pageNavigationobs->setAction(new TAction(array($this, 'onReload')));
- $this->form->addContent([$this->datagridobs]);
- $this->form->addContent([$this->pageNavigationobs]);
- ?>
este é o código do model
- <?php
- public function get_observacoes()
- {
- $criteria = new TCriteria;
- $criteria->add(new TFilter('produto_id', '=', $this->id)); // filtra apenas as observações do produto
- return ProdutosObs::getObjects( $criteria );
- }
- ?>
o model da classe ProdutosObs
- <?php
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('datahora');
- parent::addAttribute('user_id');
- parent::addAttribute('produto_id');
- parent::addAttribute('obs');
- }
- public function get_datahorabr()
- {
- return date("d/m/Y H:i:s", strtotime($this->datahora)) ;
- }
- public function set_user(SystemUser $object)
- {
- $this->user = $object;
- $this->user_id = $object->id;
- }
- public function get_user()
- {
- if (empty($this->user))
- $this->user = new SystemUser($this->user_id);
- return $this->user;
- }
- ?>
Eu fazia isso de uma forma diferente, mas acho muito trabalhoso (foreach em divs no TTextDisplay)
Acredito que estou chamando de forma errada porém não consigo ver.
Caso alguém tenha alguma sugestão agradeço.
abs
Rafael Koller
A funçaõ get_observacoes está retornando um array, então você não pode usá-la diretamente como coluna da grid. Se a função onReload está buscando as observações, as colunas da grid podem apontar diretamente para os atributos:
Valeu Nataniel!!
Era isso mesmo.
Obrigado pela ajuda e por compartilhar sua expertise.