如何使用事件观察者模型在事件sales_order_place_after获取订单号?

时间:2012-03-14 13:55:38

标签: php mysql events magento sales

如何使用事件观察者模型在事件sales_order_place_after获取订单号? 我希望在客户下订单后立即获得订单号。 PLZ为我提供相同的示例代码? 我想通过那个命令没有。到另一个外部的PHP文件&在Observer.php中包含那个php文件?我怎么能这样做?

Plz帮助我......

嗨,我想在Magento中包含外部php文件,但我无法做到这一点。任何人都可以告诉我我做错了什么 -
Observer.php-:

<?php

 include("connection/Final/Function1.php");     
class Sample_Event_Model_Observer {

    public function Mytestmethod($observer) {

        $event = $observer->getEvent();  //Fetches the current event
        $eventmsg = "Current Event Triggered : <I>" . $event->getName() . "</I>";
        echo Mage::getSingleton('checkout/session')->addSuccess($eventmsg);

    $Id = $observer->getEvent()->getOrder()->getId();   
    $incrementid = $observer->getEvent()->getOrder()->getIncrementId();

    $ordermsg1 = "Current order Id : <I>" . $Id . "</I>";
        echo Mage::getSingleton('checkout/session')->addSuccess($ordermsg1);
    $ordermsg2 = "Current increment Id : <I>" . $incrementid . "</I>";
        echo Mage::getSingleton('checkout/session')->addSuccess($ordermsg2);

    $p = new testDatabase(); 
        $p -> setId($incrementid);
        $p -> dbConnect();
      }
}
?>  

Function1.php - :

<?php 
class testDatabase 
{ 
    public function setId($getId)
    {
        $incrementid=$getId;
        echo $incrementid;
    }

    public function dbConnect()
     {  
            $db_name = "magento";
                $con = mysql_connect("localhost", "magento", "password");

        If (!$con)
        {
            die('Could not connect: ' . mysql_error());
        }
            $seldb = mysql_select_db($db_name, $con);
        If ($seldb) 
        {
            echo "Database Found ";
            $query = "INSERT INTO sample(id) VALUES($incrementid)" ;
            $result = mysql_query($query);
            print "id is added to the database"; 
            mysql_close($seldb);
        }
        else 
        {
            echo "Database NOT Found ";
        } 
     }
}

如何在Function1.php中访问变量$ incrementid?所以问题是我无法访问$ incrementid,因为它无法插入我的示例表中。我抓住了sales_order_place_after事件。因此,一旦客户按下PLACE ORDER,我就可以包含Function1.php&amp;它将采取增量/订单ID&amp;我能够访问其中需要工作的功能...... Plaese帮助我......

1 个答案:

答案 0 :(得分:6)

您可以从活动

获取此信息
$observer->getEvent()->getOrder()->getId() 

$observer->getEvent()->getOrder()->getIncrementId() 

包含外部文件的重点是什么:)您可以通过

加载任何模型

Mage::getModel('your/extension_model')

或者如果你正在做意大利面,就像你的问题所示,请使用require('path/to/file'),并记住这是一个很大的nono。