Prestashop 覆盖默认行为

Prestashop overriding default behavior

我不是 PrestaShop 的大专家,但这是我想要实现的:每次客户确认特定产品的订单时,我想向另一台服务器发送 http 请求以开始生产的产品。

这是我的想法: 在 /override/controlers/front/OrderConfirmationController.php

中创建一个文件
class OrderConfirmationController extends OrderConfirmationControllerCore
{

    public function initContent()
    {

        parent::initContent();

        $url = 'http://server.com/path';
        $data = array('key1' => 'value1', 'key2' => 'value2');

        // use key 'http' even if you send the request to https://...
        $options = array(
            'http' => array(
                'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
                'method'  => 'POST',
                'content' => http_build_query($data),
            ),
        );
        $context  = stream_context_create($options);
        $result = file_get_contents($url, false, $context);

      }
}

问题是我需要产品的某些规格(尺寸、颜色等),但并非所有类型的产品都会发送到该生产中心。

我使用的是 1.6.1.1 版本

感谢您的帮助!

昆汀

查看您覆盖的控制器的 init() 方法 /controllers/front/OrderConfirmationController.php
在那里你可能会看到:

$order = new Order((int)($this->id_order));

在子控制器中您可以访问 Order 对象,因此:

$products = $order->getProducts(); 

将为您获取产品列表。