Come rilevare una variazione di dati all'interno della scheda nel modulo di amministrazione personalizzato [chiusa]

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

Domanda

Durante la modifica degli elementi sotto forma di amministrazione personalizzato, come posso controllare se il modulo è stato modificato agli ultimi dati salvati del modulo? C'è un modo per controllare questo usando le funzioni incorporati Magento o dovrei scrivere la convalida per ogni campo del modulo per le modifiche? Ho più schede nella mia forma per nuovo avviso.

Grazie in anticipo.

È stato utile?

Soluzione

Quando si dispone di un modello che è un tipo di Mage_Core_Model_Abstract, allora si può facilmente ottenere i dati precedenti (dati originali) su Save con il metodo public function getOrigData($key=null). Ma ci sono altri due metodi che potrebbero essere utili nel vostro caso.

C'è un metodo per sapere se i valori sono cambiati o meno public function hasDataChanges(). Quindi, utilizzando questo metodo è possibile controllare se i dati è cambiato a livello globale (cioè se non v'è alcun cambiamento sarà questo flag set) e se è cambiato quindi il ciclo di tutti la chiave utilizzando un altro metodo public function dataHasChangedFor($field).

Aggiungi questi logica protected function _beforeSave().

Ecco come il codice potrebbe essere simile.

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);       
      }
   }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top