社区首页 >问答首页 >从观察者订单对象Magento获取产品的自定义属性

从观察者订单对象Magento获取产品的自定义属性
EN

Stack Overflow用户
提问于 2015-06-10 01:27:23
回答 3查看 1.3K关注 0票数 1

我试图从观察者中的产品中获取一个自定义属性。我有以下几点:

代码语言:javascript
代码运行次数:0
复制
public function export_new_order($observer){
    $orderIds = $observer->getData('order_ids');
    foreach($orderIds as $_orderId){
        $order     = Mage::getModel('sales/order')->load($_orderId);
        Mage::log($order->debug());
    }
}

这很好,我的日志中有一个不错的print_r。

然而,当我试图获得项目时,它不起作用。

我试过这个:

代码语言:javascript
代码运行次数:0
复制
public function export_new_order($observer){
    $orderIds = $observer->getData('order_ids');
    foreach($orderIds as $_orderId){
        $order     = Mage::getModel('sales/order')->load($_orderId);
        Mage::log($order->debug());
        $items = $order->getAllItems();
        Mage::log($items->debug());
    }
}

此外,还包括:

代码语言:javascript
代码运行次数:0
复制
$items = $order->getAllVisibleItems();
Mage::log($items->debug());

但是没有这些工作,每当我点击“点菜”时,我就会得到一个白色的屏幕。

代码语言:javascript
代码运行次数:0
复制
<?xml version="1.0"?>
<config>
<modules>
    <Feed_Sales>
        <version>0.0.1</version>
    </Feed_Sales>
</modules>
<global>
    <models>
        <feedsales>
            <class>Feed_Sales_Model_Order_Observer</class>
        </feedsales>
    </models>
    <events>
        <checkout_onepage_controller_success_action>
            <observers>
                <feed_sales_model_order_observer>
                    <type>singleton</type>
                    <class>Feed_Sales_Model_Order_Observer</class>
                    <method>export_new_order</method>
                </feed_sales_model_order_observer>
            </observers>
        </checkout_onepage_controller_success_action>
    </events>
</global>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-10 01:45:17

我相信,你把东西弄得很好,问题就在别的地方。集合中没有调试方法,因此如果查看服务器日志,很可能会发现有关该方法的错误。

因此,如果您想调试这些项,应该执行如下操作:

代码语言:javascript
代码运行次数:0
复制
public function export_new_order($observer){
    $orderIds = $observer->getData('order_ids');
    foreach($orderIds as $_orderId){
        $order     = Mage::getModel('sales/order')->load($_orderId);
        Mage::log($order->debug());
        $items = $order->getAllItems();
        foreach ($items as $item) {
            Mage::log($item->debug());
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-06-10 01:38:04

试着按以下方式获得订单,然后获取该订单的项目

代码语言:javascript
代码运行次数:0
复制
$order = new Mage_Sales_Model_Order();
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);

下面的链接显示了这一点。

action

票数 0
EN

Stack Overflow用户

发布于 2015-06-10 01:45:20

参数提取有问题。

为了获得订单,你可以试试这个

代码语言:javascript
代码运行次数:0
复制
 $orderIds = $observer->getEvent()->getOrderIds();

您需要更改模型前缀类名:

to:

代码语言:javascript
代码运行次数:0
复制
<class>Feed_Sales_Model</class>

出发地:

代码语言:javascript
代码运行次数:0
复制
 <class>Feed_Sales_Model_Order_Observer</class>

发自:

代码语言:javascript
代码运行次数:0
复制
 <class>Feed_Sales_Model_Order_Observer</class> 

代码语言:javascript
代码运行次数:0
复制
 <class>feedsales/order_observer</class>

文件位置应该是app/code/YOurMOduleCodePool/Feed/Sales/Model/Order/Observer.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30752367

复制
相关文章
动态路由协议之RIP协议,最古老的距离矢量协议!
RIP 英文全称:Routing Information Protocol,中文术语:**路由信息协议**,是一种**距离矢量**路由协议,用**跳数**作为路由度量。
网络技术联盟站
2022/06/02
1.7K0
动态路由协议之RIP协议,最古老的距离矢量协议!
互联网如何再定义古老的眼镜行业?
互联网正在渗透到一切行业,无论大小,不论新旧。自从13世纪意大利的修道士手工精心制作了世界上第一个助视器至今,眼镜已有800年历史。如果你戴眼镜,回忆一下,从第一次戴上近视眼镜到现在,有什么变化吗?答案应该大同小异,我的答案是:除了每次被忽悠买更贵的镜架和镜片最后发现“然而并没什么卵用”之外,前脚踏出眼镜店门槛就有一种被骗的感觉,传统眼镜行业的暴力人人皆知。2010年底成立的音米眼镜要做的就是用互联网结合SPA(等下解释)来重塑眼镜行业。 音米要做眼镜行业的ZARA优衣库 ZARA优衣库是不少互联网从业者所
罗超频道
2018/04/28
1K0
VBA解析复合文档05——读取数据流
根据前面解析得到的FAT数组、MiniFAT数组、目录信息,读取某个数据流就很简单了,只需要根据FAT数组或者MiniFAT数组构建的扇区链表,逐个扇区的去读取就可以:
xyj
2020/08/10
7650
动态读取protobuf数据
1.流程protobuf 版本3.12.1使用Importer 动态读入proto文件原型获取DescriptorPool使用Message名称获取对应的Prototype使用DynamicMessageFactory 生产Message使用Message 读取Protobuf数据2. test.proto message Test { optional string name = 1; }3.简单举例 Importer import(&tree, nullptr);
8菠萝
2022/06/09
1.2K0
pandas数据读取的问题记录
最近发现pandas的一个问题,记录一下: 有一组数据(test.txt)如下:
sladesal
2018/11/09
1.3K0
学习记录——Java读取pptx
https://time.geekbang.org/course/detail/181-118098
润森
2019/10/09
2.2K0
我眼中最好用的Android日志记录库Logger。
我刚开始学c的时候最喜欢用的就是用printf()打印信息。后来学java的时候又经常用System.out.println()这个方法。再后来学Android的时候接触到了Log工具类更是欢喜的不得了。但程序员都是懒的。后来Log敲烦了,心里总有些不爽。好在AndroidStudio提供了logt生成TAG,logd直接生成log.d()这样确实让我更爽了。 不过今天我介绍一款非常有名的开源库logger。
Frank909
2022/05/10
4K0
我眼中最好用的Android日志记录库Logger。
用户代码未处理MetadataException
最近在用EF搭框架的过程中,遇到了很多问题,大部分都是出现在配置文件中,比如说下面这个问题:
全栈程序员站长
2022/08/09
3110
用户代码未处理MetadataException
(1)sparkstreaming结合sparksql读取socket实时数据流
Spark Streaming是构建在Spark Core的RDD基础之上的,与此同时Spark Streaming引入了一个新的概念:DStream(Discretized Stream,离散化数据流),表示连续不断的数据流。DStream抽象是Spark Streaming的流处理模型,在内部实现上,Spark Streaming会对输入数据按照时间间隔(如1秒)分段,每一段数据转换为Spark中的RDD,这些分段就是Dstream,并且对DStream的操作都最终转变为对相应的RDD的操作。
NBI大数据
2022/08/31
5810
(1)sparkstreaming结合sparksql读取socket实时数据流
Flink入门:读取Kafka实时数据流,实现WordCount
本文主要介绍Flink接收一个Kafka文本数据流,进行WordCount词频统计,然后输出到标准输出上。通过本文你可以了解如何编写和运行Flink程序。
PP鲁
2020/02/26
5.5K0
Flink入门:读取Kafka实时数据流,实现WordCount
如何撤消 Git 中最新的本地提交?
在使用Git进行版本控制时,有时我们可能会犯下错误或者想要撤销最新的本地提交。Git提供了一些强大的工具和命令,使我们能够轻松地撤消最近的提交并修复错误。
网络技术联盟站
2023/05/29
1.3K0
如何撤消 Git 中最新的本地提交?
厚土Go学习笔记 | 32. Readers读取数据流
go语言的 io 包指定了 io.Reader 接口。go语言标准库包含了这个接口的许多实现,包括文件、网络连接、压缩、加密等等。 io.Reader 接口有一个 Read 方法: func (T) Read(b []byte) (n int, err error) 在程序中,我们使用循环读取数据流,直到 error 返回 io.EOF 。 我们建立一个每次以 8 个字节读取 strings.Reader 的输出的程序示例。 package main import( "fmt" "stri
李海彬
2018/03/28
8580
学习记录——Unity读取解析外部文本
话不多说直接上代码,其实就是调用已有函数,并解析到的是StreamingAssets中的文本,这样 不用访问绝对路径
MrLi001
2022/04/20
1.1K0
PostgreSQL启动恢复读取checkpoint记录失败的条件
1、首先读取ControlFile->checkPoint指向的checkpoint 2、如果读取失败,slave直接abort退出,master再次读取ControlFile->prevCheckPoint指向的checkpoint StartupXLOG->     |--checkPointLoc = ControlFile->checkPoint;     |--record = ReadCheckpointRecord(xlogreader, checkPointLoc, 1, true):     |-- if (record != NULL){           ...         }else if (StandbyMode){             ereport(PANIC,(errmsg("could not locate a valid checkpoint record")));         }else{             checkPointLoc = ControlFile->prevCheckPoint;             record = ReadCheckpointRecord(xlogreader, checkPointLoc, 2, true);             if (record != NULL){                 InRecovery = true;//标记下面进入recovery             }else{                 ereport(PANIC,(errmsg("could not locate a valid checkpoint record")));             }         }
星哥玩云
2022/08/17
8000
LeetCode 网易-2. 古老的游戏机
小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。
Michael阿明
2021/02/19
3690
实习记录(五) - AJP协议文件读取漏洞
Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互。而Tomcat服务器8009端口上的AJP协议存在漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件,如:webapp配置文件或源代码等
Naraku
2021/07/29
9550
实习记录(五) - AJP协议文件读取漏洞
mysql 获取分组中最新记录SQL写法示例 select group by order by
and it is producing the correct results however they are not in the correct order.
一个会写诗的程序员
2020/05/18
2.6K0
ROS学习记录⑥:动态配置参数
动态配置参数 1. 新建功能包 2. 创建cfg文件 3. 节点文件 4. 启动配置 1. 新建功能包 cd catkin_ws/src catkin_create_pkg pid roscpp rospy rosmsg std_msgs dynamic_reconfigure 2. 创建cfg文件 新建一个cfg文件夹,在里面新建一个.cfg文件 mkdir cfg cd cfg touch PID.cfg 动态调参的核心API: gen.add(name,type, level,description
小黑鸭
2020/11/24
1.1K0
如何避免软件工程中最昂贵错误的发生
编者按:影响软件工程进度的原因有很多种,而代码重写无疑是最耗费时间的变更之一。那么重写的时候需要注意哪些细节才能把资源开销控制到最低或可接受的程度呢?本文作者Edmond Lau在其博文中进行了阐述。以下为译文。
哲洛不闹
2018/09/19
4750
.net捕捉全局未处理异常的3种方式
 我们在实际项目开发中,经常会遇到一些不可预见的异常产生,有的异常在程序运行时就对其进行处理(try) 但是,有的程序不需要每一个地方都用try进行处理,那么针对这种情况,可以参照下面的方式,实现对异常的统一抓取处理
小小许
2018/09/20
1.4K0

相似问题

如何删除卡桑德拉中最古老的记录?

13

如何选择表PostgreSQL中最古老的记录?

20

SQL :返回日期中最古老的记录

21

如何在分组记录旁边获得mongodb组中最古老的记录?

11

如何分配python中最古老的列

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文