The displayField you can get it from the table. That is $event->subject()->displayField();
You can also determine the prefix from the table in $event->subject() I guess On Wednesday, July 23, 2014 4:50:10 PM UTC+2, Stefano Zoffoli wrote: > > Thank you, this is a very nice solution and it worked perfectly! > > How can I pass extra infos for Logs' description field? (i mean like a > custom prefix string and the entity displayfield's value?) > > > -- > Stefano Zoffoli > *Resp. Sviluppo Software* > 347 8180258 > > *Librasoft Snc* > www.LibrasoftSnc.it <http://www.librasoftsnc.it/> > www.ProgettoKuma.it <http://www.progettokuma.it/> > 0543 424612 > > > 2014-07-23 13:55 GMT+02:00 José Lorenzo <[email protected]>: > >> I see.... I would re-do that at the controller level: >> >> class AuditLogger implements \Cake\Event\EventListener { >> >> public function construct(AuthComponent $auth) { >> $this->_auth = $auth; >> } >> >> public function implementedEvents() { >> return ['Model.afterSave' => 'logSave']; >> } >> >> public function logSave($event, $entity, $options) { >> $logs->save(new Entity(['user_id' => $this->auth->user('id'), ...])); >> } >> } >> >> And in your Controller: >> >> public function beforeFilter() { >> .... >> $this->Customers->eventManager()->attach(new AuditLogger($this->Auth) >> ); >> } >> >> This way you keep your separation of concerns and have smaller and more >> testable classes that you can reuse :) >> >> On Wednesday, July 23, 2014 12:56:51 PM UTC+2, Stefano Zoffoli wrote: >>> >>> Yes of course: >>> I have a CustomersTable, a UsersTable and a LogsTable. The LogsTable has >>> basically 4 fields: id, user_id, description, created. >>> >>> When an authenticated user saves a customer, i'd like to log this user >>> action. So, in CustomersTable I added a callback method like this: >>> >>> public function afterSave(Event $event, Entity $entity, array $options) { >>> $logs = TableRegistry::get('Logs'); >>> $log = $logs->newEntity([ >>> 'user_id' => AuthComponent::user('id'), >>> 'description' => 'Saved customer', >>> ]); >>> $logs->save($log); >>> } >>> >>> But AuthComponent::user() is not static and gave me fatal error. >>> >>> >>> -- >>> Stefano Zoffoli >>> *Resp. Sviluppo Software* >>> 347 8180258 >>> >>> *Librasoft Snc* >>> www.LibrasoftSnc.it <http://www.librasoftsnc.it/> >>> www.ProgettoKuma.it <http://www.progettokuma.it/> >>> 0543 424612 >>> >>> >>> 2014-07-23 12:40 GMT+02:00 José Lorenzo <[email protected]>: >>> >>>> That's not possible anymore. We are currently investigating clean ways >>>> of implementing this use case. May I ask why you need the session in the >>>> table? >>>> >>>> >>>> On Wednesday, July 23, 2014 11:53:48 AM UTC+2, Stefano Zoffoli wrote: >>>>> >>>>> Hi, >>>>> i'd like to read user auth infos in a Table Class (for example i want >>>>> to log which user has saved a given entity in a AfterSave callback >>>>> method). >>>>> >>>>> In cakephp 2 there was AuthComponent::user() static method, but in >>>>> cakephp 3 that method is not static anymore, and I can't find a simple >>>>> way >>>>> to access that information outside of Controllers. >>>>> >>>>> How can i do that? >>>>> Thank you >>>>> >>>>> -- >>>>> Stefano Zoffoli >>>>> *Resp. Sviluppo Software* >>>>> 347 8180258 >>>>> >>>>> *Librasoft Snc* >>>>> www.LibrasoftSnc.it <http://www.librasoftsnc.it/> >>>>> www.ProgettoKuma.it <http://www.progettokuma.it/> >>>>> 0543 424612 >>>>> >>>> -- >>>> Like Us on FaceBook https://www.facebook.com/CakePHP >>>> Find us on Twitter http://twitter.com/CakePHP >>>> >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "CakePHP" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/cake-php. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> Like Us on FaceBook https://www.facebook.com/CakePHP >> Find us on Twitter http://twitter.com/CakePHP >> >> --- >> You received this message because you are subscribed to the Google Groups >> "CakePHP" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/cake-php. >> For more options, visit https://groups.google.com/d/optout. >> > > -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.
