我们有一个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
的键174
是1531
,然后你立即覆盖它,说参数bundle_option
的键174
是1532
。
您可以在任何基本的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() );