Magento 新购物车属性

2024-03-10

嗨,我面临的问题一开始似乎很简单,但现在变成了一场真正的噩梦。

我被要求向所有产品添加一个属性(即点)(使用管理面板非常简单地完成)并将其总计作为可以设置规则的购物车属性!?

我非常肯定购物车属性是在以下位置定义的:

class Mage_SalesRule_Model_Rule_Condition_Address extends Mage_Rule_Model_Condition_Abstract
{
public function loadAttributeOptions()
{
    $attributes = array(
        'base_subtotal' => Mage::helper('salesrule')->__('Subtotal'),
        'total_qty' => Mage::helper('salesrule')->__('Total Items Quantity'),
        'weight' => Mage::helper('salesrule')->__('Total Weight'),
        'payment_method' => Mage::helper('salesrule')->__('Payment Method'),
        'shipping_method' => Mage::helper('salesrule')->__('Shipping Method'),
        'postcode' => Mage::helper('salesrule')->__('Shipping Postcode'),
        'region' => Mage::helper('salesrule')->__('Shipping Region'),
        'region_id' => Mage::helper('salesrule')->__('Shipping State/Province'),
        'country_id' => Mage::helper('salesrule')->__('Shipping Country'),
    );

    $this->setAttributeOption($attributes);

    return $this;
}
<...>

因此,如果我覆盖此模型并向该数组添加一个项目,我将获得规则定义管理面板中显示的属性。似乎除了total_qty 和 payment_method 之外,所有这些属性在 sales_flat_quote_address 表中都有一个匹配的列!

现在的问题是我应该怎么做才能在规则处理中计算和评估我的新属性?我应该向该表添加一列并在购物车更改时更新其值吗?

任何有关如何做到这一点的见解都将非常有价值,谢谢。


我终于成功完成了任务,为了将来的参考,我在这里解释了这个过程。

问题中提到的类(即:Mage_SalesRule_Model_Rule_Condition_Address)是问题的关键。我不得不重写它,由于某种奇怪的原因,我无法通过扩展它来获得我需要的东西,所以我的类扩展了它的父类(即:Mage_Rule_Model_Condition_Abstract)。

正如我所说,我将属性添加到 $attributes 中,如下所示:

'net_score' => Mage::helper('mymodule')->__('Net Score')

我还修改了 getInputType() 方法并将我的属性声明为数字

现在的技巧是 validate() 方法:

public function validate(Varien_Object $object)
{
    $address = $object;
    if (!$address instanceof Mage_Sales_Model_Quote_Address) {
        if ($object->getQuote()->isVirtual()) {
            $address = $object->getQuote()->getBillingAddress();
        }
        else {
            $address = $object->getQuote()->getShippingAddress();
        }
    }

    if ('payment_method' == $this->getAttribute() && ! $address->hasPaymentMethod()) {
        $address->setPaymentMethod($object->getQuote()->getPayment()->getMethod());
    }

    return parent::validate($address);
}

正如您所看到的,它准备了 Mage_Sales_Model_Quote_Address 的实例并将其发送到其父验证方法。您可以看到该对象 ($address) 默认情况下没有 payment_method,因此此方法创建一个并将其分配给它。所以我也做了同样的事情,只是在返回之前添加了以下代码:

if ('net_score' == $this->getAttribute() && ! $address->hasNetScore()) {
    $address->setNetScore( /*the logic for retrieving the value*/);
}

现在我可以对此属性设置规则。

希望这些信息将来可以节省某人的时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento 新购物车属性 的相关文章

  • Node.js 找不到模块“tcp”

    节点在以下行崩溃 var tcp require tcp 错误文本 node js 201 throw e process nextTick error or error event on first tick Error Cannot f
  • 如何使用 jQuery 获取 attr?

    div class item p img src images photos sample1 jpg border 0 p p Dining Area p div div class item p img src images photos
  • 是否可以将 __m128 变量中的内部值作为 C++ 类中的属性进行访问?

    我想要一个使用 SSE 内在函数实现的 Vector 类 表示 3 个浮点数的向量 因此我不会使用 m128 类型的第四个元素 但我希望能够像属性一样轻松访问它们 因此 myVector x 将访问 vec 中的 0 31 位 myVect
  • clang:自定义属性在 AST 中不可见

    我按照官方手册中的描述在 clang 中实现了一个自定义属性 http clang llvm org docs InternalsManual html how to add an attribute http clang llvm org
  • 如何解决PHP扩展“0”必须加载的问题?

    我正在尝试在我的服务器上安装 Magento 我做了一切 正如文档中所写的 我有以下错误 必须加载 PHP 扩展 0 当我尝试在浏览器中的第二页上配置 Magento 时 会发生这种情况 你知道如何解决这个问题吗 如果您安装的是 Magen
  • 如何获取当前模块内某个类的所有实例

    我有一个模块foo定义一个类Foo 并实例化该类的多个实例 从其他模块 我可以import foo并获得一个列表Foo实例化的对象 getattr foo f for f in dir f if isinstance getattr foo
  • magento 付款流程..一般如何运作

    有一个问题 我希望这是问的正确地方 不太明白magento 中的付款方式 客户去结账 假设想要以客人身份付款 因此提供地址等 最后找到付款方式 然后我希望客户通过信用卡付款 已经为我选择的网关 银行 安装了模块 那时 我希望用户被重定向到第
  • 如何以轮子格式安装 Python 库?

    我正在寻找有关如何以轮格式安装 Python 库的教程 它看起来并不简单 所以我希望有一个简单的分步教程 说明如何为 CPython 安装名为 requests 的模块 我从以下位置下载的 https pypi python org pyp
  • Rails:如何为 ruby​​ 模块编写测试?

    我想知道如何为混合到几个类中的模块编写单元测试 但不太知道如何去做 我是否通过在包含它们的类的测试文件之一中编写测试来测试实例方法 似乎不正确 或者您可以以某种方式将所包含方法的测试保留在特定于模块的单独文件中吗 同样的问题也适用于类方法
  • 属性绑定与属性插值

    我读过一篇关于属性和属性绑定之间差异的文章 据我了解 大多数时候 Angular2 更喜欢属性绑定 因为每次数据更改后 DOM 都会更新 如果我错了 请纠正我 我有一个自定义组件并从父组件中使用它 其中 我有一个 Input named t
  • 获取实体的请求。attribute == @"somevalue"

    如何设置提取请求以仅从具有一个特定值的实体属性中提取数据 这是我之前使用过的基本代码 void fetchResults NSFetchRequest fetchRequest NSFetchRequest fetchRequestWith
  • 对内核模块代码进行单元测试是否可行?

    如果是这样我应该使用什么技术 我正在考虑使用 hippomock 因为它们可以用来模拟 C 方法 还有更好的方法吗 如果是这样 任何人都可以提供建议 或者您认为内核的单元测试是否太过分了 从 Linux 内核版本 5 5 开始KUnit可用
  • 如何从控制器调用构造函数中具有参数(接口)的属性

    public class HMACAuthenticationAttribute Attribute IAsyncAuthorizationFilter public HMACAuthenticationAttribute IUser us
  • 查找多模块 Maven Reactor 项目的根目录

    有没有一种简单的方法可以找到多模块 Maven 项目的根 例如 Gradle 的rootDir 背景 我想使用 maven dependency plugin 将多模块项目的所有子模块中的工件复制到相对于整个项目的根目录的目录 也就是说 我
  • Magento CSRF 保护

    我正在 Magento 中查看自定义表单 我看到了这些教程 http fastdivision com 2012 03 29 diy magento create ajax login registration forms for your
  • 安装新的 Magento 扩展需要注销/登录,否则您会在管理页面中收到 404

    两个不同的人告诉我 以下是 Magento 的一个已知问题 安装新扩展时 管理员尝试访问 配置扩展程序 并获取 404 页面 去的方法 解决此问题的方法是注销然后登录到他的管理面板 在设计扩展时有没有办法解决这个问题 这方面有一个悬而未决的
  • 如何覆盖magento中的管理模板文件?

    我需要覆盖 adminhtml sales order create items grid phtml 文件 以在从管理员创建新订单时在每个项目下显示一些自定义文本 我希望通过自定义模块来完成此操作 任何人都可以建议如何覆盖管理模板文件 非
  • Yii框架2.0添加媒体打印到css链接

    使用 Yii 框架 2 0 我包含一个 css 文件 其中包含以下代码资产 AppAsset php public css css style css 当我在网络浏览器上检查元素时 我在标题标记中看到以下代码 我想添加打印 css到网页媒体
  • Magento 以编程方式删除产品图像

    这肯定是一个非常简单的编程任务 我绝对无法在网上找到任何有关它的信息 基本上 我正在尝试删除产品图像 我想删除产品媒体库中的所有图像 我可以在不为如此简单的任务编写一百万行代码的情况下完成此操作吗 请注意 我已经尝试过 attributes
  • Excel VBA 模块在运行时未更新

    我有 2 个模块 主模块在运行时更新另一个模块 并在每次更新时运行该模块 问题是另一个模块在运行时似乎没有更新 它运行第一个模块 因为输出全部根据第一个输入 但运行完成后 我检查了其他模块 它已更新 但输出不符合更新的模块 我已经问过这个问

随机推荐

  • Facebook graphApi oAuth - 如何获取访问令牌?

    我正在尝试使用 JavaScript Facebook SDK 获取某个用户的留言墙 当我使用图形 API Explorer 时 它工作正常 但是当我在我的网站上尝试同样的操作时 出现以下错误 code 104 message An acc
  • 实例化列表时 是什么类型?

    我在多个不同的地方看到人们实例化列表或 ArrayList 例如 List
  • Java EE 容器中的同步请求-应答模式

    我希望在 Java EE 容器内使用 JMS 实现同步请求 答复模式 顺序会是这样的 浏览器向 Web 应用程序发出数据请求 这是一个阻塞请求 比如在线程 T1 上 Web 应用程序需要连接到远程 Web 服务才能满足上述请求 因此 它形成
  • 在真实设备与模拟器上测试 iOS 测试

    我是 iPhone iPad 开发新手 即将完成我的第一个应用程序 我正在寻找一些一般性建议 我知道在实际设备上进行测试很重要 而不仅仅是模拟器 人们在交易设备上进行测试时通常会遇到哪些类型的事情 而他们在模拟器中看不到 该应用程序本身主要
  • pl/sql 函数中的 select 子句返回错误值

    当我这样做时 select sum m mot from rmtq mq join rmo m on mq id m id where mq another 138 返回值 2 这是正确的 但是当我将此代码放入函数中时 create or
  • 多个主屏幕小部件的单个配置活动

    我的 Android 应用程序有一个针对不同 Homescreen 小部件的配置活动 我在配置活动中获取 WidgetId 如下所示 widgetid extras getInt AppWidgetManager EXTRA APPWIDG
  • iOS 6 保存/恢复应用程序状态功能

    我正在尝试在 iOS 6 上使用新的保存 恢复应用程序状态功能 但是如果我杀死了应用程序 则不会调用 application shouldRestoreApplicationState 方法 因此它不会恢复应用程序状态 但如果我正在运行它从
  • 正交相机旋转

    我可以使用此代码旋转相机 camera zoom 3 in constructor if camera zoom gt 1 camera zoom 0 01f camera rotate 15 this is done in render
  • Shrine gem - 如何从 s3 删除上传的图像

    显然 remove attachment插件可以完成检查和提交的技巧 但如何从控制器调用该方法 所有允许您设置表单字段的插件 remove attachment remote url data uri 的工作方式是向您的模型添加 gette
  • 使用简洁的 DAL 和 C#

    我有一个使用 Dapper 的数据访问层 但不禁觉得它可以更加优雅 DAL 只是传递参数并根据模型的命名响应映射模型 因此该部分至少是直接的 但我讨厌看起来重复的代码 这是一个例子 public IEnumerable
  • 故事板segue 显示从底部垂直而不是水平的过渡

    我有一个基本的故事板设置 可以通过单击按钮来通过一些视图控制器进行转换 我还在故事板的根部设置了一个导航控制器 希望这个 Segue 链的性能与一系列 Pushes 过去的工作方式类似 功能都在那里 导航栏控制也是如此 但是过渡都有从底部进
  • 计算非常大的矩阵的逆

    我正在尝试用 C 计算一个非常大的矩阵 11300x21500 的逆 到目前为止 我已经尝试过 Eigen 和 Armadillo 库 但都在初始化阶段失败 说没有足够的内存 有什么办法可以克服这种情况吗 提前致谢 P S I should
  • 使 Linearlayout 可滚动而不使用 Scrollview

    我有一个 Linearlayout 我想使其可滚动而不使用 ScrollView 是否可以 任何建议将不胜感激 详细信息如下 如果我使用 ScrollView 包装 LinearLayout 那就可以了 但是当我在 LinearLayout
  • 如何在 Alamofire 中使用 NetworkReachabilityManager

    我想要类似的功能AFNetworking在 Objective C 中 在 Swift 中使用 Alamofire NetworkReachabilityManager Reachability detection AFNetworkRea
  • Ruby 使用什么哈希函数?

    Ruby 的哈希函数算法是什么 标准 Ruby 实现使用杂音哈希 http murmurhash googlepages com 对于某些类型 整数 字符串 来自 string c 1901 MurmurHash described in
  • _("text"),即下划线括号字符,有什么作用? [复制]

    这个问题在这里已经有答案了 在 C 代码中我遇到了这一点 test 它有什么作用 我试图自己查找它 但正如你可以想象的那样 搜索引擎不支持搜索 它正在调用名为的函数 例如 include
  • 依赖注入:海龟一路向下?

    所以我想知道单元测试如何处理外部依赖项 在这里和其他地方 我已经熟悉了依赖注入 以及它如何允许我们测试代码单元 A 但是 我对如何测试其他单元 B 和 C 感到困惑 这些单元现在拥有外部依赖项 以便它们可以将其注入到原始单元 A 中 例如
  • 在整数规划中使用最小/最大运算符

    我正在尝试使用整数规划优化目标函数 我必须使用Max我的函数中的运算符 我想知道有什么办法可以处理这个问题吗 其实我的问题类似于使用最小 最大within整数线性规划 https stackoverflow com questions 10
  • Tinkerpop 框架写入数据库 - 新手

    我第一次使用 Frames 但我的 Java 还很生疏 我一直坚持通过框架将信息写入数据库 我一直在关注文档并拥有一个 Person 界面 public interface Person Property name public Strin
  • Magento 新购物车属性

    嗨 我面临的问题一开始似乎很简单 但现在变成了一场真正的噩梦 我被要求向所有产品添加一个属性 即点 使用管理面板非常简单地完成 并将其总计作为可以设置规则的购物车属性 我非常肯定购物车属性是在以下位置定义的 class Mage Sales