Я работаю над этим модулем оповещения по электронной почте для моего магазина Magento, и я основывал свой код на a magento stack exchange thread here. После долгих занятий я получил свою собственную версию для работы. Я задавался вопросом, почему пример кода не работает:Sending Stock Update Email Magento
class MyCompany_MyModule_Model_Observer
{
public function lowStockReport($observer)
{
$stockItem = $observer->getEvent();
if($stockItem->getQty() < $stockItem->getNotifyStockQty()){
//stock is lower than the notify amount, send email
$product = Mage::getModel('catalog/product')->load($stockItem->getProductId());
$body = "{$product->getName()} :: {$product->getSku()} just Ran out of stock:\n\n";
$body .= "Current Qty: {$stockItem->getQty()}\n";
$body .= "Low Stock Date: {$stockItem->getLowStockDate()}\n";
$mail = new Zend_Mail();
$mail->setType(Zend_Mime::MULTIPART_RELATED);
$mail->setBodyHtml($body);
$mail->setFrom('[email protected]', 'Low Stock Notifier');
$mail->addTo('[email protected]', 'Your Name Here');
$mail->setSubject('[Notice] An Item Has Gone Out of Stock');
$mail->send();
}
}
}
Однако мой грязнее код сделал работу просто отлично:
class Custom_Stockupdate_Model_Observer
{
public function lowStockReport($observer)
{
$stockItem = $observer->getEvent();
$myItem = ($stockItem->debug());
$theQty = $myItem['data_object (Mage_CatalogInventory_Model_Stock_Item)']['qty'];
$theId = $myItem['data_object (Mage_CatalogInventory_Model_Stock_Item)']['product_id'];
if($theQty == '0'){
//stock is lower than the notify amount, send email
$product = Mage::getModel('catalog/product')->load($theId);
$body = "{$product->getName()} :: {$product->getSku()} just Ran out of stock:\n\n";
$body .= "Current Qty: {$theQty}\n";
$mail = new Zend_Mail();
$mail->setType(Zend_Mime::MULTIPART_RELATED);
$mail->setBodyHtml($body);
$mail->setFrom('[email protected]', 'Low Stock Notifier');
$mail->addTo('[email protected]', 'Your Name Here');
$mail->setSubject('[Notice] An Item Has Gone Out of Stock');
$mail->send();
}
}
}
Любые критические замечания и лучшие практики я пропустил бы весьма признателен, так как я до сих пор новичок.
Вы уверены, что $ stockItem-> getNotifyStockQty() больше, чем $ stockItem-> getQty()? Не могли бы вы проверить оба значения? – SeStro
Это был мой первый намек на то, что значения как-то не тянут или нулевыми. они оба возвращают нулевые значения, когда я выводил их в mage :: log(). Мое предположение в то время состояло в том, что вызовы методов объекта getNotifyStockQty() и getQty() не существовали для этого объекта. –