好的,所以我想知道如何将一些自定义数据发送到PrestaShop中的购物车控制器(或者确切地说是任何控制器)。
例如,我的某些产品有一个“size
”字段。我希望我的<form>
包含该字段,只要它存在于产品中并将其发送给Controller。
问题是,如何命名该字段以便控制器识别它?
答案 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');
希望这有帮助!