osservatore evento Necessità di prodotto di importazione Salva regolatore fila
-
16-10-2019 - |
Domanda
Come posso catturare l'importazione di prodotti modello Mage_Catalog_Model_Convert_Adapter_Product saverow () evento utilizzando osservatore.
Mage::dispatchEvent('catalog_product_import_profile_after', array('adapter'=>$this));
Io uso questo, ma non ottenere il successo.
Questo è il mio codice: nella mia app \ code \ comunità \ Compnyname \ ImportProduct \ controller \ \ Adminhtml \ RunProfileController.php
class Compnyname_ImportProduct_Adminhtml_RunProfileController extends Mage_Adminhtml_Controller_action
{
protected function _initAction()
{
.....
}
public function indexAction()
{
........
}
public function runAction()
{
...........
}
public function batchRunAction()
{
$currentUrl = Mage::helper('core/url')->getCurrentUrl();
$ids = explode("/", $currentUrl);
$id=$ids[11];
$file=explode("?",$id);
$file_name = $file[0];
$path = Mage::getBaseDir('var') . DS . 'import' . DS ;
$filepath =$path.$file_name;
$header=array();
$header1=array();
$i = 0;
if(($handle = fopen("$filepath", "r")) !== FALSE)
{
while(($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
if($i==0)
{
$header1[$i]=$data;
}
else
{
$header[$i]=$data;
}
$i++;
}
$array1=array();
$array2=array();
for($kd=1;$kd<=count($header);$kd++)
{
$jk=0;
foreach ($header1[0] as $key => $value)
{
$array1[$value]=$header[$kd][$jk];
$jk++;
}
$this->updateData($array1);
}
}
return true;
}
public function updateData($data)
{
//$importData=$data;
$collection = Mage::getModel('importproduct/convert_adapter_product')->saveRow($data);
if($collection)
{
$this->batchFinish();
}else{
$this->batchError();
}
//$j = $j + 1;
//return "hello";
}
public function batchFinish()
{
//$batchId = $this->getRequest()->getParam('id');
Mage::dispatchEvent('catalog_product_import_profile_after', array('adapter'=>$this));
//Mage::dispatchEvent('catalog_product_prepare_save', array('adapter'=>$this));
//catalog_product_prepare_save
//echo "hello".$var;
echo "batchfinish....";
}
public function batchError()
{
echo "error";
}
function testAction()
{
echo "testing...";
}
}
?>
app \ code \ comunità \ Compnyname \ ImportProduct \ modello \ Convert \ Adapter \ Product.php
class Compmyname_ImportProduct_Model_Convert_Adapter_Product extends Mage_Catalog_Model_Convert_Adapter_Product
{
.....
public function saveRow(array $importData)
{
code for save raw
}
......
}
Voglio chiamare osservatore durante il processo di prodotto di importazione è in esecuzione e la chiamata osservatore dopo, quando una riga è di importazione. Per esempio se in csv c'è 500 prodotto allora osservatore chiamata 500 tempo.
Si prega di aiuto per risolvere questo problema.
Soluzione
Sembra come se si sta riscrivendo il metodo Mage_Catalog_Model_Convert_Adapter_Product
- aggiungere la tua spedizione in là:
class Compmyname_ImportProduct_Model_Convert_Adapter_Product extends Mage_Catalog_Model_Convert_Adapter_Product
{
public function saveRow(array $importData)
{
//do the work from the parent class
parent::saveRow($importData);
//dispatch your own event
Mage::dispatchEvent('convert_adapter_product_save_row_after', array('import_data'=>$importData, 'product'=>$this));
}
}