Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Notice em SystemChangeLogTrait Erro ao habilitar Logs de Alteração de registros Coloquei na classe que desejo monitorar as mudanças o comando e ao fazer uma alteração aparece a mensagem: Notice: Undefined property: stdClass::1942 in C:UsersJLeonelProgramasUSBWebserver v8.6rootciaappmodellogSystemChangeLogTrait.php on line 12 como mostro na figura em ...
JF
Notice em SystemChangeLogTrait  
Erro ao habilitar Logs de Alteração de registros

Coloquei na classe que desejo monitorar as mudanças o comando
  1. <?php use SystemChangeLogTrait?>
e ao fazer uma alteração aparece a mensagem:
Notice: Undefined property: stdClass::1942 in C:\Users\JLeonel\Programas\USBWebserver v8.6\root\cia\app\model\log\SystemChangeLogTrait.php on line 12

como mostro na figura em anexo.
O que pode ser?

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (5)


JF

Alguém sabe o que está acontecendo?
R

Também estou com o mesmo erro.
Fiz a seguinte alteração, mas não sei se não teria solução mais adequada sem precisar alterar o framework.

ARQUIVO: model/log/SystemChangeLogTrait.php

ANTES:
  1. <?php
  2. trait SystemChangeLogTrait
  3. {
  4.     public function onAfterDelete$object )
  5.     {
  6.         SystemChangeLog::register($this$object, array());
  7.     }
  8.     
  9.     public function onBeforeStore($object)
  10.     {
  11.         $this->lastState = array();
  12.         if (self::exists($object->id))                                                     //aqui é onde ocorre o erro
  13.         {
  14.             $this->lastState parent::load($object->id)->toArray();
  15.         }
  16.     }
  17.     
  18.     public function onAfterStore($object)
  19.     {
  20.         SystemChangeLog::register($this$this->lastState, (array) $object);
  21.     }
  22. }
  23. ?>


DEPOIS:
  1. <?php
  2. trait SystemChangeLogTrait
  3. {
  4.     public function onAfterDelete$object )
  5.     {
  6.         SystemChangeLog::register($this$object, array());
  7.     }
  8.     
  9.     public function onBeforeStore($object)
  10.     {
  11.         $this->lastState = array();
  12.         if (isset($object->id))                                   //adicionei esta linha para resolver o Notice
  13.         {
  14.             if (self::exists($object->id))
  15.             {
  16.                 $this->lastState parent::load($object->id)->toArray();
  17.             }
  18.          }
  19.     }
  20.     
  21.     public function onAfterStore($object)
  22.     {
  23.         SystemChangeLog::register($this$this->lastState, (array) $object);
  24.     }
  25. }
PD

Já arrumei:

public function onBeforeStore($object)
{
$pk = $this->getPrimaryKey();
$this->lastState = array();
if (self::exists($object->$pk))
{
$this->lastState = parent::load($object->$pk)->toArray();
}
}
R

Obrigado Pablo. Mas para mim o problema continuou. Entendi que agora você identifica qual o parâmetro é utilizado como Chave Primária antes de entrar no laço.
Mas como o problema continuou, e baseado na sua correção, identifiquei que esse erro ocorre quando salvo um formulário onde o método onSave() também chama outro método adicional para gravar informações de outra classe de modelo, e é na execução deste método adicional que dá o erro.
Então eu fiz outra alteração, conforme exemplo abaixo, e parece funcionar, teria alguma solução melhor para o Framework no meu caso? A propósito, observei também que nem sempre ele armazena as exclusões que são feitas no sistema, somente quando eu excluo informando o ID é que ele armazena, se eu excluir informando critérios, como em caso de exclusão em lote por chamada de método, ele não grava essa informação pelo SystemChangeLog, só grava pelo SystemSqlLog.

  1. <?php
  2. public function onBeforeStore($object
  3.     { 
  4.         $pk $this->getPrimaryKey(); 
  5.         $this->lastState = array();
  6.         if (!isset($object->$pk))
  7.         {
  8.             $object->$pk $this->getLastID() +1;
  9.         }
  10.         if(self::exists($object->$pk)) 
  11.         { 
  12.             $this->lastState parent::load($object->$pk)->toArray(); 
  13.         } 
  14.     } 
  15. ?>
EL

Esse erro ainda continua, mesmo colocando esses códigos do Pablo Dall'Oglio.