prestashop 1.6属性为textfield

时间:2014-05-28 22:20:18

标签: attributes textfield prestashop

我正在制作一个可定制的产品在prestashop销售,它是一个辣椒酱,你可以根据自己的口味完全定制...我做得很好,prestashop中的属性选项很好设置下拉选择字段和outers东西,但是,我不能简单地添加一个文本框!我试图找到一个解决方案,但它很复杂...

http://pimentaemcasa.com.br/home/8-pimenta-personalizada.html

你们可以在中间看到自定义选项,最后一个是酱的名称,它是一个文本框但是在用户点击“comprar”(添加到购物车)后它无处可去,我需要发布它与外部属性一起,现在它只是一个文本字段,无处发送他的价值......任何人都可以帮我附上订单上的名字?

(产品中的prestashop自定义选项让你放置一个文本框,但是它还需要你在点击“添加到购物车”之前在名称中点击“保存”,可怕的,嘿prestashop团队,算一下水龙头!; p )

thaaanks!

1 个答案:

答案 0 :(得分:1)

我在此示例中使用文本字段自定义数据,您应该为您的产品创建自定义输入数据(在此示例中称为昵称)。 您可以添加文本框并将其值发送到blockcart模块中的ajax-cart.js,

in

add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist)

您可以添加输入,例如

var nickname = $('input[name=nickname]').val();

并在ajax调用中发送值

$.ajax({
        type: 'POST',
        headers: { "cache-control": "no-cache" },
        url: baseUri + '?rand=' + new Date().getTime(),
        async: true,
        cache: false,
        dataType : "json",
/*************** added by TAREK ******************************/         
data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != 
null) ? quantity : '1') + '&id_product=' + idProduct
 +'&nickname='+nickname+ '&token=' + static_token + ( 
(parseInt(idCombination) && idCombination != null) ? '&ipa=' + 
parseInt(idCombination): ''),
/*************** added by TAREK ******************************/         

在cartController.php(override)中,在processChangeProductInCart函数中,if (!$this->errors && $mode == 'add')之后你应该在数据库中添加自定义数据值的代码

$authorized_text_fields = array('nickname');
    foreach ($_POST as $field_name => $value)
        if (in_array($field_name, $authorized_text_fields) && $value != '')
        {
            if (!Validate::isMessage($value))
                $this->errors[] = Tools::displayError('Invalid message');
            else {
                $this->context->cart->deleteCustomizationToProduct((int)$this->id_product, 'nickname');
                $this->context->cart->addTextFieldToProduct($this->id_product, 'nickname', Product::CUSTOMIZE_TEXTFIELD,Tools::getValue('nickname')); 
            }
        }
        else if (in_array($field_name, $authorized_text_fields) && $value == '') 
            $this->context->cart->deleteCustomizationToProduct((int)$this->id_product, 'nickname');

希望这有帮助, 亲切。