Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Erro no uso de traits Ola pessoal. Estou seguindo os exemplos do curso do adianti. Relativo a listagem usando trait. Ao digitar alguma coisa no formulario de busca é mostrada uma mensagem de erro. Call to a member function getData() on null /var/www/html/emilio/adianti74/framework/lib/adianti/base/AdiantiStandardCollectionTrait.php:159 Alguem pode me ajudar? Segue o codigo fonte. class UFTrait...
EL
Erro no uso de traits  
Ola pessoal.
Estou seguindo os exemplos do curso do adianti. Relativo a listagem usando trait.
Ao digitar alguma coisa no formulario de busca é mostrada uma mensagem de erro.

Call to a member function getData() on null
/var/www/html/emilio/adianti74/framework/lib/adianti/base/AdiantiStandardCollectionTrait.php:159

Alguem pode me ajudar?

Segue o codigo fonte.





class UFTraitList extends TPage
{

private $form_busca;
private $datagrid;
private $pageNavigation; // objeto de paginacao

use AdiantiBaseAdiantiStandardListTrait;

public function __construct()
{
parent::__construct();

$this->setDatabase('med');
$this->setActiveRecord('UF');
$this->addFilterField('nm_uf','like','nome_busca');
$this->setDefaultOrder('id_uf','asc');

// busca
$this->form_busca = new BootstrapFormBuilder;
$this->form_busca->setFormTitle('Estados');
$nome_busca = new TEntry('nome_busca');

$this->form_busca->addFields([new TLabel('Nome')],[$nome_busca]);
$this->form_busca->addAction('Buscar',new TAction([$this, 'onSearch']),'fa:search blue');
$this->form_busca->addActionLink('Novo', new TAction(['CadUFTrait','onClear']),'fa:plus-circle green');
$this->form_busca->setData(TSession::getValue(__CLASS__.'_filter_data'));

// datagrid
$this->datagrid = new BootstrapDatagridWrapper( new TDataGrid );
$this->datagrid->width = '100%';

// Definindo as colunas
$col_id = new TDataGridColumn('id_uf', 'ID', 'right', '10%');
$col_nome = new TDataGridColumn('nm_uf', 'Nome', 'left', '80%');
$col_sigla = new TDataGridColumn('sigla', 'Sigla','right','10%');

// incluir ordenacao
$col_id->setAction( new TAction([$this,'onReload']),['order' => 'id_uf']);
$col_nome->setAction(new TAction([$this,'onReload']),['order' => 'nm_uf']);


// Adicionar colunas na datagrid
$this->datagrid->addColumn($col_id);
$this->datagrid->addColumn($col_nome);
$this->datagrid->addColumn($col_sigla);

$action1 = new TDataGridAction(['CadUFTrait','onEdit'],['key'=> '{id_uf}']);
// $action1 = new TDataGridAction(['CadUF','onEdit'],['key'=> '{id_uf}']);
$action2 = new TDataGridAction([$this,'onDelete'],['key'=>'{id_uf}']);

// Adicionar acoes na datagrid
$this->datagrid->addAction($action1,'Editar' ,'fa:edit blue');
$this->datagrid->addAction($action2,'Excluir','fa:trash-alt red');

$this->datagrid->createModel();

$this->pageNavigation = new TPageNavigation;
$this->pageNavigation->setAction(new TAction([$this,'onReload']));



$panel = new TPanelGroup();
$panel->add($this->datagrid);
// $panel->Title = 'Estados';
$panel->style = 'height:600px';
$panel->addFooter($this->pageNavigation);

$vbox = new TVBox;
$vbox->style = 'width:100%';
$vbox->add($this->form_busca);
$vbox->add($panel);


parent::add($vbox);


}



}

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


EL

Gostaria de ajuda no sentido de entender o significado do erro que aparece no meu codigo, embora eu esteja seguindo o curso.

Call to a member function getData() on null
/var/www/html/emilio/adianti74/framework/lib/adianti/base/AdiantiStandardCollectionTrait.php:159

O que significa, e como resolver.

Agradeço.
NR

O erro diz que você está chamando o método "getData" em uma variável que não existe.
A linha 159 da trait tem o seguinte:
  1. <?php
  2. $data $this->form->getData();
  3. ?>

Ou seja, "$this->form" é null, então não é possível chamar "getData".

No seu código, use "$this->form" ao invés de "$this->form_busca", pois é essa variável que a trait padrão utiliza.