LINUX.ORG.RU

OpenCart формат параметров API

 ,


0

1

Ковыряю сабж, не могу понять как работает вот этот кусок, что ему нужно подать через POST-запрос, что бы оно его обработало:

if (isset($this->request->post['product'])) {
	$this->cart->clear();
	foreach ($this->request->post['product'] as $product) {
		if (isset($product['option'])) {
			$option = $product['option'];
		} else {
			$option = array();
		}
		$this->cart->add($product['product_id'], $product['quantity'], $option);
}
В каком виде параметы должны быть переданы, т.е. как через POST передать ему массив именованных списков?

★★★★
// php
$params = ['product' => [
    [
        'option'     => ['name1' => 'value1', 'name2' => 'value2'],
        'product_id' => 10,
        'quantity'   => 2
    ], [
        'option'     => ['name1' => 'value1', 'name2' => 'value2'],
        'product_id' => 11,
        'quantity'   => 1
    ],
], ];

// raw post
product[0][option][name1] = value1
product[0][option][name2] = value2
product[0][product_id] = 10
product[0][quantity] = 2
product[1][option][name1] = value1
product[1][option][name2] = value2
product[1][product_id] = 11
product[1][quantity] = 1
kiotoze ★★★★
()
Ответ на: комментарий от kiotoze

Во, так я и думал.
Если можно - пример хоть на PHP хоть с курлом, как ему правильно массив этот передать.
Yе могу ему это через POST(осторожно, питон) скормить:

>>> session.post(url+'cart/add',
    params={'api_token': api_token},
    data={'product': [
        {'product_id': 2009, 'quantity': 1},
        {'product_id': 2008, 'quantity': 1}
    ]}
)
send: b'product=product_id&product=quantity&product=product_id&product=quantity'
reply: 'HTTP/1.1 200 OK\r\n'
Invalid argument supplied for foreach() in cart.php on line 14
{"success":"Success: You have modified your shopping cart!"}'

Yustas ★★★★
() автор топика
Последнее исправление: Yustas (всего исправлений: 3)
Ответ на: комментарий от Yustas

Что-то типа такого:

curl -F "product[0][option][name1]=value1" -F "product[0][option][name2]=value2" -F "product[0][product_id]=10" -F "product[0][quantity]=2"

sanwashere ★★
()
Ответ на: комментарий от Yustas

Если можно - пример хоть на PHP хоть с курлом, как ему правильно массив этот передать.

$params = ['product' => [
    [
        'option'     => ['name1' => 'value1', 'name2' => 'value2'],
        'product_id' => 10,
        'quantity'   => 2
    ], [
        'option'     => ['name1' => 'value1', 'name2' => 'value2'],
        'product_id' => 11,
        'quantity'   => 1
    ],
], ];

// с курлом работать как-то так
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/cart/add');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close ($ch);
kiotoze ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.