其他字段发送到PrestaShop中的购物车控制器

时间:2015-03-30 15:30:08

标签: php controller e-commerce prestashop

好的,所以我想知道如何将一些自定义数据发送到PrestaShop中的购物车控制器(或者确切地说是任何控制器)。

例如,我的某些产品有一个“size”字段。我希望我的<form>包含该字段,只要它存在于产品中并将其发送给Controller。

问题是,如何命名该字段以便控制器识别它?

1 个答案:

答案 0 :(得分:1)

您可以提供prestashop不会用于特定上下文的任何名称。

以下是如何做到这一点。

1.将输入字段放在buy_block表单中。

示例:

<input type="hidden" id="size" name="size" value="10" />

2.然后来自CartController - &gt; postProcess()方法你可以这样得到它。

$ size =工具:: getValue('尺寸');

public function postProcess()
{
    // Update the cart ONLY if $this->cookies are available, in order to avoid ghost carts created by bots
    if ($this->context->cookie->exists() && !$this->errors && !($this->context->customer->isLogged() && !$this->isTokenValid()))
    {
        if (Tools::getIsset('add') || Tools::getIsset('update'))
            $this->processChangeProductInCart();
        elseif (Tools::getIsset('delete'))
            $this->processDeleteProductInCart();
        elseif (Tools::getIsset('changeAddressDelivery'))
            $this->processChangeProductAddressDelivery();
        elseif (Tools::getIsset('allowSeperatedPackage'))
            $this->processAllowSeperatedPackage();
        elseif (Tools::getIsset('duplicate'))
            $this->processDuplicateProduct();

        $size = Tools::getValue('size');

如果您必须使用此数据与数据库进行通信,则此值也将在购物车类的 updateQty 方法中提供。

public function updateQty($quantity, $id_product, $id_product_attribute = null, $id_customization = false,
    $operator = 'up', $id_address_delivery = 0, Shop $shop = null, $auto_add_cart_rule = true)
{
    if (!$shop)
        $shop = Context::getContext()->shop;

    if (Context::getContext()->customer->id)
    {

    $size = Tools::getValue('size');

希望这有帮助!