Problemas al obtener la recolección de productos en el observador
-
16-10-2019 - |
Pregunta
Estoy tratando de construir un pequeño módulo que alojan un observador de conseguir cuando se llama y el evento llamado cuando se dispara catalog_product_import_profile_after
este caso es costumbre que he disparado el uso de la etiqueta ??p>
Mage::dispatchEvent('catalog_product_import_profile_after',array('adapter'=>$this));
en el archivo app/code/core/Mage/Adminhtml/controllers/System/Convert/ProfileController.php
Mi módulo config.xml es
<?xml version="1.0"?>
<config>
<modules>
<GWB_ClearOrphan>
<version>0.1.0</version>
</GWB_ClearOrphan>
</modules>
<global>
<helpers>
<clearorphan>
<class>GWB_ClearOrphan_Helper</class>
</clearorphan>
</helpers>
<models>
<clearorphan>
<class>GWB_ClearOrphan_Model</class>
<resourceModel>clearorphan_mysql4</resourceModel>
</clearorphan>
</models>
<events>
<catalog_product_import_profile_after> <!-- identifier of the event we want to catch -->
<observers>
<catalog_product_import_profile_after_handler> <!-- identifier of the event handler -->
<type>model</type> <!-- class method call type; valid are model, object and singleton -->
<class>clearorphan/observer</class> <!-- observers class alias -->
<method>disableProducts</method> <!-- observer's method to be called -->
<args></args> <!-- additional arguments passed to observer -->
</catalog_product_import_profile_after_handler>
</observers>
</catalog_product_import_profile_after>
</events>
</global>
</config>
y la Observer.php
es
<?php
class GWB_ClearOrphan_Model_Observer
{
public function disableProducts(Varien_Event_Observer $observer)
{
//mail('kapil_gupta@gowebbaby.com','sub-test','msg-test');
try{
$collection = Mage::getModel('catalog/product')->getCollection();
$pro_collection = var_dump($collection);
mail('kapil_gupta@gowebbaby.com','collection',$pro_collection);
}
catch(Exception $e) {
//Mage::log($e->getMessage(), null, 'collection.log');
}
}
el mail con la función disableProducts está funcionando correctamente pero no soy capaz de obtener la colección de productos utilizando este código $collection = Mage::getModel('catalog/product')->getCollection();
cualquier cuerpo que tiene alguna idea acerca de lo que he hecho mal punto amablemente a cabo. Gracias.
Solución
Una colección estará vacía hasta que acceda a los datos en su interior (es decir, foreach
bucle), o llamar al método ->load()
contra ella. Después de una colección se ha cargado ya no se puede editar el conjunto de resultados que contiene, por lo que este enfoque le permite refinar y filtrar los resultados devueltos por alterar el objeto de selección contenidos en el interior del objeto de colección. Esto, a su vez modifica el plazo consulta contra la base de datos y por lo tanto los elementos que se encuentran en la colección una vez que se ha cargado.
Si en lugar de utilizar
$collection = Mage::getModel('catalog/product')->getCollection()->load();
encontrará la colección a continuación contiene los datos. Tenga en cuenta que depende de la tienda, la colección catalog/product
puede ser muy grande, así que sin duda no recomendaría correo electrónico a su contenido ya que esto podría ser una enorme cantidad de datos - esto es especialmente el caso de una tienda en vivo. Si usted está tratando de depurar usted debe utilizar Xdebug y un IDE NetBeans como en un entorno de desarrollo local para inspeccionar objetos y sus contenidos.
Otros consejos
tratar de utilizar
$collection = $observer->getProduct();
var_dump($collection);