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

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.

¿Fue útil?

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top