Prestashop覆盖默认行为

时间:2015-09-15 12:41:46

标签: prestashop

我不是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

感谢您的帮助!

昆汀

1 个答案:

答案 0 :(得分:0)

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

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

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

$products = $order->getProducts(); 

将为您提供产品清单。