通过URL查询字符串添加捆绑产品


Adding bundle products via URL query string

我们有一个Magento商店(v1.9.2),我希望能够通过查询字符串中的选项通过url添加捆绑产品。

它几乎在工作。。。但问题是,每个bundle选项都有几个需要选择的项,但查询字符串只会选择其中一个。

前端选项的示例屏幕截图:https://www.dropbox.com/s/80s1pjl7nfmum8t/Screen%20Shot%202016-04-30%20at%2010.20.02.png?dl=0

URL示例:

/结账/购物车/添加/产品/329/数量/1/?bundle_option[174]=1531&bundle_option[174]=1532&form_key=rGK59KHglVmkjdRg

这应该在捆绑选项174中选择两个项目,但它只选择一个。

有人能帮忙吗?我不知道我是否遗漏了关于URL结构的东西,也不知道代码是否需要修改!

TL;DR

您缺少一些[]

因此,您请求的url应该是:
http://www.example.org/checkout/cart/add/product/329/qty/1/?bundle_option[174][]=1531&bundle_option[174][]=1532&form_key=rGK59KHglVmkjdRg


这是数组在get参数中的基本用法。

当你说bundle_option[174]=1531&bundle_option[174]=1532时,你实际上是在说参数bundle_option的键1741531,然后你立即覆盖它,说参数bundle_option的键1741532

您可以在任何基本的php脚本中尝试:
假设我们将包含此代码的some.php?bundle_option[174]=1531&bundle_option[174]=1532称为

<?php var_dump($_GET);

它将回声:

some.php:1:
array (size=1)
  'bundle_option' => 
    array (size=1)
      174 => string '1532' (length=4)

当你需要的,以及Magento希望你拥有的复选框选项,你可以在其中选择多项,是一个数组。

因此,使用与上面完全相同的文件:
如果我们调用some.php?bundle_option[174][]=1531&bundle_option[174][]=1532,就会得到一个数组:

some.php:1:
array (size=1)
  'bundle_option' => 
    array (size=1)
      174 => 
        array (size=2)
          0 => string '1531' (length=4)
          1 => string '1532' (length=4)

如果你真的有一个Magento控制器要测试,你也可以在那里使用一个操作,并使用查看查询参数的结果

Zend_Debug::dump( $this->getRequest()->getParams() );