Prestashop:如何在客户tpl文件中提交购物车?

时间:2015-11-19 03:02:29

标签: php prestashop

我正在开发一个模块,我想从tpl文件(cer.tpl)提交购物车。 下面是cer.tpl中表单的代码。

<form role="form" action="{$link->getPageLink('cart')|escape:'html':'UTF-8'}" method="post">
            <div class="form-group">                
                <textarea class="form-control" rows="3" name="consulting_Info" id="consulting_Info"></textarea>
            </div>          
            <p class="hidden">
                    <input type="hidden" name="token" value="{$static_token}" />
                    <input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" />
                    <input type="hidden" name="add" value=1 />
                    <input type="hidden" name="id_product_attribute" id="idCombination" value=1 />
                    <input type="text" name="qty" id="quantity_wanted" class="text" value=1 />
                    <input type="text" name="test" id="test" class="text" value="TestValue" />
            </p>
            <div class="no-print">
                <button type="submit" name="Submit" class="exclusive">
                    </span>{l s='Add to cart'}</span>
                </button>
            </div>

我使用Tools :: getValue方法获取&#39; consulting_Info&#39;的值。领域。 在cartController.php中

&#13;
&#13;
public function init()
	{
		parent::init();
		// Send noindex to avoid ghost carts by bots
		header('X-Robots-Tag: noindex, nofollow', true);
		// Get page main parameters
		$this->id_product = (int)Tools::getValue('id_product', null);
		$this->id_product_attribute = (int)Tools::getValue('id_product_attribute', Tools::getValue('ipa'));
		$this->customization_id = (int)Tools::getValue('id_customization');
		$this->qty = abs(Tools::getValue('qty', 1));
		$this->id_address_delivery = (int)Tools::getValue('id_address_delivery');
**$this->consulting_Info = (int)Tools::getValue('consulting_Info');
$this->context->smarty->assign('consulting_Info', $consulting_Info);**		
		}
&#13;
&#13;
&#13;

最后,我在shopping-cart.tpl中写了{$ consulting_Info},它显示了付款页面,但它没有显示onsulting_Info字段中的值。

1 个答案:

答案 0 :(得分:0)

其实你想把cart提交到cartController这是核心文件。我想你应该在prestashop的modules文件夹中创建一个新模块,然后就可以编写你的tpl文件了:

cer.tpl:

        <p id=vss_buy_now" class="buttons_bottom_block no-print" style="margin-top:-210px">
            <input type="button" name="vss_buy_now" value="{l s='Add to cart' mod='your_module_name'}" class="vss_left_col" id="vss_buy_now" style="background:{$background|escape:'htmlall':'UTF-8'};color:{$text|escape:'htmlall':'UTF-8'};border:{$border|escape:'htmlall':'UTF-8'};"/>
        </p>
      <script>
       $( "#vss_buy_now" ).one( "click", function() {
        var id_product_attribute = document.getElementById('idCombination').value;
        var id_product = document.getElementById('product_page_product_id').value;
        var quantity = document.getElementById('quantity_wanted').value;
        $.post(
                '{$link|escape:'quotes':'UTF-8'}',
                {
                    id: id_product,
                    ipa: id_product_attribute,
                    qty: quantity
                },
        function (data) {
            window.location.replace(data);
        }
        );
    });
    <script>

之后你必须在模块文件夹中制作一个前控制器,如:

C:\wamp\www\prestashop\modules\your_module_name\controllers\front

然后在其中创建一个名为:

的文件
C:\wamp\www\prestashop\modules\your_module_name\controllers\front\your_module_name.php

然后在该文件中,您必须编写如下代码:

your_module_name.php // **请注意,它是控制器文件夹中的文件//

<?php
class Your_Module_NameYour_Module_NameModuleFrontController extends ModuleFrontController
{

public function initContent()
    {
        $qty = Tools::getValue('qty');
        $id_product = Tools::getValue('id');
        $id_product_attribute = Tools::getValue('ipa');

    }

}

现在,在该文件中,您可以获得产品详细信息,并且可以执行操作。我希望它能为您提供帮助。