2016-06-03 6 views
-1

Ich bin auf einem CakePHP 2-System arbeiten, die eine Protokollierung Abschnitt haben, dass die Datensätze Daten, die von den Nutzern zum Beispiel gespeichert wurde:Logging auf CakePHP2

Der Benutzer A auf database_table folgenden Daten speichern: Name : PUM PUM PUM complete_name: B Beschreibung: etwas

Es gibt eine Protokolltabelle ist, die die folgenden Felder haben: id, users_id, Datum und Beschreibung

Jedes Mal, wenn ein Benutzer Daten gespeichert werden, wird eine neue Zeile erzeugt auf der Protokolltabelle. Dieser Prozess wird automatisch ausgeführt, kein Controller hat Code zum Speichern in dieser Tabelle, also nehme ich an, dass es eine CakePHP-Funktion gibt, die dies tut. Ich muss einige Änderungen vornehmen, aber ich kann nicht finden, wo ich diese Protokollierungsfunktion konfigurieren kann. Ich habe die CakePHP-Dokumentation unter http://book.cakephp.org/2.0/en/core-libraries/logging.html gelesen, aber ich kann die Einstellung nicht finden.

Jemand weiß, wo sich diese Funktion befindet und wie kann ich sie ändern?

+2

Das ist nicht etwas, mit dem CakePHP ausgeliefert wird, es ist etwas, das für Ihre Anwendung spezifisch ist, und passiert höchstwahrscheinlich in einem 'afterSave' ** [Callback] (http://book.cakephp.org/2.0/en/models /callback-methods.html)** des verwandten Modells, oder ein ** [Modellverhalten] (http://book.cakephp.org/2.0/en/models/behaviors.html) **. – ndm

+0

@ndm: Vielen Dank, ich habe etwas gefunden, das dem ähnelt, was Sie in der AppModel.php-Datei beschreiben. Es hat die Abfrage, die in der Logs-Tabelle speichern, so dass ich jetzt die Abfrage ändern kann, um zu tun, was ich brauche. Bitte posten Sie Ihren Kommentar als Antwort, um abzustimmen. – Vito

Antwort

0

Ich fand eine Lösung basierend auf dem Kommentar von ndm zur Verfügung gestellt. Der Code dafür ist auf dem afterSave-Ereignis des AppModel, das auf alle anderen Modelle erweitert wird. Der Code auf dem AppModel sieht aus wie diese:

App::uses('Model', 'Model'); 

class AppModel extends Model { 

public function afterSave($created, $options = array()) { 
    $data = $this->data; 
    //if the value its != de Statisctic excutes regular code 

    if(! isset($data['Statistic'])){ 
     if($created){ 
      if((isset($_SESSION['User']['User']['id'])) && ($_SESSION['User']['User']['id'] != null)){ 
       //here goes all the logic which saves to the logs table      
      } 
     }  
    } 
} 

}

Da dieses Modell für alle anderen Modelle erweitert wird, dieser Code ausgeführt wird, nachdem jeder in der Datenbank speichern.