在 Magento 中将产品添加到购物车时如何设置“文件”类型的自定义选项?

2023-12-31

使用我自己的控制器,我将产品添加到 Magento 购物车。它有 3 个自定义选项:2 个下拉选项(颜色和尺寸)和一个文件选项(设计)。将产品添加到购物车的代码是

// obtain the shopping cart
$cart = Mage::getSingleton('checkout/cart');

// load the product
$product = Mage::getModel('catalog/product')
    ->load($productId);

// do some magic to obtain the select ids for color and size ($selectedSize and $selectedColor)
// ...

// define the buy request params
$params = array(
    'product'       => $productId,
    'qty'           => $quantity,
    'options'       => array(
        $customOptionSize->getId()  => $selectedSize,
        $customOptionColor->getId() => $selectedColor,

        // set the file option, but how? 
    ),
);

// add this configuration to cart
$cart->addProduct($product, $paramObject);
$cart->save();

// set the cart as updated
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

我的问题是:如何将某个文件附加到设计选项中?

文件已经传输到服务器端(实际上是通过请求)。不过,如果需要的话,我可以伪造上传。但到目前为止,我还没有找到有关设置文件自定义选项的单一信息来源......

通过 Magento 源浏览,我的最佳猜测是购买请求需要一些额外的数据(不在选项中,而是在 params 对象中),例如: option_123_file => 某些内容,但我没有弄清楚到底需要什么然而。 Magento 源代码的这一部分相当,呃,不那么直接。谢谢你的帮助。


好吧终于弄清楚了。 params 数组需要特殊条目来告诉带有键“options_xx_file_action”的自定义选项如何处理文件(“save_new”或“save_old”)。这看起来像:

$params = array(
    'product'       => $productId,
    'qty'           => $quantity,
    'options'       => array(
        $customOptionSize->getId()  => $selectedSize,
        $customOptionColor->getId() => $selectedColor,
    ),
    'options_'.$customOptionDesign->getId().'_file_action'=>'save_new',
);

显然,您需要将文件添加到发布请求中(通过表单或类似方式)。文件名应为“options_xx_file”。例如,就我而言,我的 $_FILES 如下所示:

Array (
[options_108_file] => Array
    (
        [name] => i-like.png
        [type] => application/octet-stream
        [tmp_name] => C:\xampp\tmp\phpAAB8.tmp
        [error] => 0
        [size] => 6369
    )

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

在 Magento 中将产品添加到购物车时如何设置“文件”类型的自定义选项? 的相关文章

  • Realloc 和 sscanf 到一个函数中

    我有一个文件 里面有num行 每一行包含一个数字 我想将每个数字保存到一个向量中 vet 为什么这段代码不起作用 Segmentation fault core dumped 我认为错误是sscanf in save numbers功能 但
  • 通过文件名通配符打开文件

    我有一个文本文件目录 所有文件的扩展名都是 txt 我的目标是打印文本文件的内容 我希望能够使用通配符 txt指定我希望打开的文件名 我正在思考类似的事情F text txt 分割文本文件的行 然后打印输出 这是我想做的一个例子 但我希望能
  • 如何从 Emacs 中检出 Perforce 下的文件?

    我在工作中使用 Perforce 进行源代码控制 并且希望从 Emacs 中 打开以进行编辑 源代码控制下的文件 那怎么办呢 我需要在 Emacs 中设置什么 有插件吗 我还想执行其他 p4 操作 例如提交我的更改等 Perforce Em
  • 文件构造函数说明

    我无法理解以下文件构造函数 public File String parent String child and public File File parent String child 参数有什么作用parent and child该文件
  • 如何在play框架中从服务器读取文件

    我有以下文件 app menus menu1 yml 我想阅读它的内容 简短回答 fileContent play vfs VirtualFile fromRelativePath app menus menu1 yml contentAs
  • 添加或删除带有原型的类

    无法计算用于添加或删除基于单击函数的 img 元素 选定 的 css 类名 选定 的 PROTOTYPE 脚本 已为 Jquery 完成 但它必须在 Prototype 中 这让我发疯 无法使其适用于原型 我的原始代码是 Magento 商
  • 下订单时如何在 Magento 中触发电子邮件?

    我需要以下问题的解决方案 1 客户下订单 2 店主收到没有价格信息的电子邮件 例如装箱单 我需要编辑哪些文件 我读过很多帖子 但他们似乎没有提到文件路径 Thx 实现这一目标的两种可能方法 您可以为该类创建模型重写Mage Sales Mo
  • 在 Android 中哪里可以找到应用程序数据

    我的目标是将应用程序中的数据保存在文本文件中以供进一步分析 我使用了给出的确切代码here http www mysamplecode com 2012 06 android internal external storage html用于
  • Java-使用InputStream作为文件

    我正在尝试使用上传的 docx 文件生成 PDF 文档JOD转换器 http www artofsolving com opensource jodconverter 对生成 PDF 的方法的调用如下所示 File inputFile ne
  • python - 使用“with”语句后的变量范围[重复]

    这个问题在这里已经有答案了 我在 stackoverflow 上没有找到这个问题的答案 所以我认为询问它可能会有所帮助 并将其放在这里 我在打开文件后声明一个新字典 方法如下 with open some file txt r as f d
  • Android:永久保存文件(即使在清除数据/卸载后)

    我想知道是否有一种方法可以永久存储少量数据 永久我的意思是即使用户清除应用程序数据 卸载应用程序 我也希望数据保留下来 我知道当用户清除应用程序数据 卸载应用程序时 共享首选项和数据库将被删除 我也知道我可以在 SD 卡上保存内容 但是如果
  • 以编程方式将 Magento 订单标记为完整

    当我从第三方服务收到特定响应时 我尝试将 处理 订单标记为 完成 我已经为此做好了一切设置 但唯一的问题是订单仍处于处理状态 我正在生成发票 不过我认为我不需要这个 因为每个项目在 Magento 后端都被标记为 已开票 和发货 如下所示
  • 如何在 Magento 中缓存集合?

    我有一个需要大量时间才能加载的集合 我想要的是缓存它 APC Memcache 无法缓存整个对象 因为它无法反序列化并且超过 1 MB 我认为缓存集合数据 col gt getData 是可行的方法 但我找不到基于此数组重建对象的方法 有什
  • System.IO.IOException:进程无法访问文件“.txt”,因为它正在被另一个进程使用

    我正在使用下一个代码来记录 Web 应用程序的错误 using StreamWriter myStream new StreamWriter sLogFilePath true myStream WriteLine string Forma
  • 如何在 Emacs 中保存所有文件(或保存所有缓冲区)?

    C x C s saves only the current buffer 如何保存所有文件 或所有缓冲区 Press C x s and then choose for saving all buffers
  • 使用 TcpClient 通过 C# 通过 TCP 发送多个文件

    我正在尝试使用 C TcpClient 通过 TCP 发送多个文件 对于单个文件来说它效果很好 但是当我有多个文件时 它只发送第一个文件 这是我的代码 发送文件 try TcpClient tcpClient new TcpClient N
  • Java IO 文件前缀字符串太短 - 但事实并非如此

    尝试从一个目录创建简单的 tar gz 文件 有我的代码 File destinationFile new File var www swOfflineFeeds Companies 2 File sourceFile new File v
  • 打开/尝试读取文件[重复]

    这个问题在这里已经有答案了 我尝试简单地读取文本文件的内容并将其存储到数组中 但是 ins open file txt r array for line in ins array append line ins close 它给了我一个 打
  • 将 Google 信任徽章添加到 Magento

    我正在尝试将 Google Trust Badge 添加到我的 magento 商店 我尝试在 Magento 网站上搜索扩展程序 但找不到 我是否需要将以下代码粘贴到产品和结账页面 还是必须对其进行更改 如果有人能引导我走向正确的方向 我
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件

随机推荐