【发布时间】:2012-03-14 13:55:37
【问题描述】:
如何使用事件观察者模型在事件sales_order_place_after获取订单号?
我想在客户下订单后立即获得订单号。
我想传递那个订单号。到另一个外部 php 文件并在 Observer.php 中包含该 php 文件?我该怎么做?
我正在尝试在 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();
}
}
?>
函数1.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 并且它将采用增量/订单 ID,并且我可以访问其中的函数来完成必要的工作。
【问题讨论】: