2016-04-30 2 views
2

у нас есть магазин Magento (v1.9.2), и я хочу иметь возможность добавлять продукты пакета через URL-адрес с параметрами строки запроса.Добавление пакетов продуктов через строку запроса URL

Он почти работает ... но проблема в том, что у каждой опции пакета есть несколько элементов, которые нужно выбрать, но строка запроса выберет только один из них.

Пример экрана опций на интерфейсе: https://www.dropbox.com/s/80s1pjl7nfmum8t/Screen%20Shot%202016-04-30%20at%2010.20.02.png?dl=0

Пример URL:

/Checkout/корзина/добавить/продукта/329/кол-во/1/bundle_option [174] = 1531 & bundle_option [174] = 1532 & form_key = rGK59KHglVmkjdRg

Это должно выбрать один из двух элементов в опции расслоения 174, но он выбирает только одну.

Может кто-то, пожалуйста, помогите, я не знаю, не хватает ли я чего-то относительно структуры URL-адреса, если код нуждается в изменении!

ответ

1

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


Это основное использование массива в получить параметры.

Когда вы говорите bundle_option[174]=1531&bundle_option[174]=1532 вы на самом деле говорят, что ключ 174 параметра bundle_option является 1531 затем переопределить его сразу произнося ключ 174 параметра bundle_option является 1532.

Вы можете попробовать, что в любой основной скрипт:
Скажем, мы называем 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()); 
Смежные вопросы