2010-11-22 3 views
0

Ich habe eine Protokollfunktion in meinem Projekt, die alle Änderungen an verschiedenen Modellen verfolgt. Angenommen, ein Benutzer oder ein Administrator bearbeitet ein Konto. Oder wenn ein Benutzer einen neuen Datensatz erstellt. Alle diese Aktionen werden in der Protokolltabelle aufgezeichnet.So erhalten Sie den Modell- und Aktionsnamen der aufrufenden Aktion

Ich möchte, dass das Protokollmodell den Modellnamen und den Aktionsnamen in einer beforeSave-Aktion selbst abruft, wenn sie zum Speichern eines neuen Datensatzes aufgerufen wird. Ich nenne es nun von einem Controller-Aktion dergleichen diese speichern zu machen:

$this->Log->save(array(
    'user'=>$this->Auth->user('id'), 
    'model'=>$this->name, 
    'action'=>$this->action)); 

Ich würde gerne in der Lage sein, es zu verkürzen bis:

$this->Log->save(); 

Antwort

1

Ich fand Alkerman wunderbar LogableBehavior und es funktioniert wie ein Charme. Keine Notwendigkeit, das Rad neu zu erfinden.

0

Ich glaube, ich geneigt sein würde, entweder zu schreiben Verfahren auf app_controller wie

saveLog() die

$this->Log->save($uma_array)

ruft

oder vereinfachen Sie Ihre indem

$this->Log->save($this)

und Entwirren der Daten innerhalb der Methode konstruieren existieren.

EDIT:

Natürlich ist der beste Weg, dies zu tun wäre, beobachtbares Verhalten verwenden Teknoid des Musters mit: http://nuts-and-bolts-of-cakephp.com/2009/08/10/observer-pattern-the-cakephp-way/ Es ist nicht so schwierig zu implementieren.

+0

Es ist besser, die save() - Methode im Protokollmodell zu schreiben. – bancer

Verwandte Themen