【问题标题】:How to get Order No. at event sales_order_place_after using event-observer model?如何使用事件观察者模型在事件 sales_order_place_after 获取订单号?
【发布时间】: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,并且我可以访问其中的函数来完成必要的工作。

【问题讨论】:

    标签: php mysql magento events


    【解决方案1】:

    你可以从活动中得到这个

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

    包含外部文件有什么意义 :) 您可以通过

    加载任何模型

    Mage::getModel('your/extension_model')

    或者,如果您按照问题指示的方式做意大利面,请使用 require('path/to/file') 并记住这是一个很大的 nono。

    【讨论】:

    • 嗨 Aton,我有外部 PHP 文件 sample.php 包含具有 mysql 连接功能的类 mysql、获取数据、将数据插入 mysql 自定义表和另一个具有 Oracle 连接功能的类 oracle 和插入oracle。那么如何在 Observer.php 中包含此文件,或者如何在客户按下下订单选项卡后立即调用/执行此文件?所以我在想的是将生成的订单ID传递给该文件并通过包含/调用该文件来执行该查询?请指导我...
    • 嗨 Aton,我同意 MySQL 连接的方法。但是 Oracle 数据库呢,因为我们在 Magento EE 1.10 中没有对 Oracle 的适配器/支持。因此,要在 Oracle 中插入数据,我使用连接到 magento 数据库的 php 文件,获取数据并将其插入到 oracle 数据库中。在这种情况下我能做什么,因为我需要在下订单时完成整个过程......这就是为什么我打算包含/调用该外部 PHP 文件......如果我错了,请指导我......
    • 1.11 有 Oracle 帮助程序,但没有 1.10,因此在升级之前您只能使用外部脚本。
    • 您好,Ben,由于组织的限制,我们无法升级到 1.11...在这种情况下您能否提供任何其他建议...
    • 它毕竟是 php,你可以包含任何东西并在你的观察者方法中执行它
    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多