<input type="hidden" name="product_id" value="{$object.product_id}"/> <input type="hidden" name="action" value="add_product"/>
Filesystem/Core/components/basket/processors/basket/mgr/orders/products/getdata.class.php
Filesystem/Core/components/basket/processors/basket/web/orders/products/getdata.class.php
можно и javascript цикл сделать, с последовательным добавлением нескольких товаров, через ajax
<script> $(function() { $('#product_f').submit(function(e){ //отменяем стандартное действие при отправке формы e.preventDefault(); //берем из формы метод передачи данных var m_method=$(this).attr('method'); //получаем адрес скрипта на сервере, куда нужно отправить форму var m_action='http://www.tehnofazenda.ru/assets/components/basket/connectors/connector.php?action=products/add'; {assign var=arr value=array(1,2,3,4)} {foreach from=$arr item=i} var op_data="product_id={$object{$i}.product_id}"; if (document.getElementById('option{$link{$i}}').checked) { $.ajax({ type: m_method, url: m_action, data: op_data, success: function(result){ } }); } {/foreach} //получаем данные, введенные пользователем в формате input1=value1&input2=value2..., //то есть в стандартном формате передачи данных формы var m_data=$(this).serialize(); $.ajax({ type: m_method, url: m_action, data: m_data, success: function(result){ setTimeout("document.location.href='http://www.tehnofazenda.ru/order/'", 700); } }); }); }); </script>
public function process(){ $path = $this->modx->getObject('modNamespace', 'basket')->getCorePath().'processors/'; foreach($products as $product_id => $quantity){ if(!$response = $modx->runProcessor('basket/web/orders/products/add', array( "product_id" => $product_id, "quantity" => $quantity ? $quantity : 1, ), array( 'processors_path' => $path, ))){ return $this->failure("Не удалось выполнить процессор"); } // else if($response->isError()){ return $response->getResponse(); } } return $this->success('Товары успешно добавлены'); }