evento di caricamento del prodotto - a prescindere dal contesto
-
16-10-2019 - |
Domanda
C'è un singolo evento che posso creare un osservatore per questo viene generato quando un prodotto viene caricato sia utilizzando getModel
o attraverso una raccolta?
Il caso d'uso esatto che ho è che ho un attributo di prodotto personalizzato, ma al fine di restituire il risultato corretto, più logica che deve essere fatto, che è basata su altri fattori? Sto quindi pensando di calcolare questa logica dopo il carico e riporlo in un altro membro. Se qualcuno ha un'alternativa sarei anche grato per questo consiglio.
Soluzione
Non è necessario un osservatore per fare questo. È possibile utilizzare l'backend_model
attributo per gestire la logica.
Se si specifica un backend_model con l'attributo e si estende la classe Mage_Eav_Model_Entity_Attribute_Backend_Abstract
all'interno della vostra classe del modello backend è possibile utilizzare i metodi afterLoad
, beforeSave
, afterSave
, beforeDelete
o afterDelete
per eseguire la propria logica.
Uso della backend_model
è il modo corretto per implementare questo tipo di logica ed è il modo nativo attributi Magento farlo dove hanno requisiti similiar.
Altri suggerimenti
Purtroppo sembra che si potrebbe essere necessario utilizzare due qui: (
del prodotto: catalog_product_load_after
Collezione: catalog_product_collection_load_after
L'evento di raccolta ti dà un oggetto 'raccolta' con cui lavorare. È possibile scorrere questa e apportare le modifiche a livello di prodotto. Se si sposta il codice in un aiuto o di utilizzare lo stesso per entrambi gli eventi Observer.php
allora si dovrebbe essere in grado di limitare la quantità di codice duplicato.
Prova
<catalog_product_load_after>
<observers>
...
https://stackoverflow.com/questions/15763829/magento-load-product- evento-osservatore