Erkennung einer Änderung der Daten in der Registerkarte im benutzerdefinierten Administratormodul [geschlossen

magento.stackexchange https://magento.stackexchange.com/questions/12489

Frage

Wie kann ich beim Bearbeiten der Elemente im benutzerdefinierten Admin -Formular überprüfen, ob das Formular an die letzten gespeicherten Daten des Formulars bearbeitet wurde? Gibt es eine Möglichkeit, dies mithilfe von eingebauten Magento -Funktionen zu überprüfen, oder sollte ich die Validierung für jedes Feld in der Form für Änderungen schreiben? Ich habe mehrere Registerkarten in meinem Formular, um weiter zu bemerken.

Danke im Voraus.

War es hilfreich?

Lösung

Wenn Sie ein Modell haben, das eine Art von Art von ist Mage_Core_Model_Abstract, und dann können Sie einfach die vorherigen Daten (Originaldaten) auf Speichern mithilfe verwenden public function getOrigData($key=null) Methode. Es gibt jedoch zwei andere Methoden, die in Ihrem Fall hilfreich sein könnten.

Es gibt eine Methode, um zu wissen, ob sich die Werte geändert haben oder nicht public function hasDataChanges(). Mit dieser Methode können Sie prüfen, ob sich Ihre Daten global geändert haben (dh, ob sich dieses Flag geändert hat) und wenn sie geändert werden, durch den gesamten Schlüssel mit einer anderen Methode durchlaufen public function dataHasChangedFor($field).

Fügen Sie diese Logik hinzu protected function _beforeSave().

So sehen Sie aus, wie Sie aussehen könnten.

protected function _beforeSave() {
   parent::_beforeSave();
   if ($this->hasDataChanges()) {
      foreach ($this->_data as $key => $value) {
          if (!$this->dataHasChangedFor($key)) continue;

          // Now you know what field value has changed and call your own function to handle the changed parameter, or check conditions. 
          // This could be a switch/case handler that will call other function just to keep this function clean.
          $this->_dataChangeHandler($key, $value);       
      }
   }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top