тема 1.7 добавить поле в процессе оформления заказа (и сохранить его)

тема 1.7 добавить поле в процессе оформления заказа (и сохранить его)

08.10.2018 05:30:12 Просмотров 74 Источник

Добрый день, я создал модуль, который добавляет новое поле (попросите счет) во время проверки, я добавил его в крючок выбора платежа.

Как я сохраняю значение поля (это флажок) после отправки страницы? Я имею в виду после того, как платеж был выбран и кнопка отправки нажата?

public function hookDisplayPaymentTop()
    {
        /* 
            echo"<pre>";
            print_r($this->context->cart);
            echo"</pre>";
        */

        $sql = 'SELECT vat_number FROM ' . _DB_PREFIX_ . 'address WHERE `id_address` = '.$this->context->cart->id_address_invoice;
        $vat_number = Db::getInstance()->getValue($sql);

        if ($vat_number == false) {
            $message = $this->l(' your VAT number is invalid or ');
            $vat_status = 0;
        }else{
            $message = $vat_number;
            $vat_status = 1;
        }

        $this->context->smarty->assign([
        'foo' => 'bar',
        'usrId' => $this->context->customer->id,
        'vat' => $vat_number,
        'vat_status' => $vat_status,
        'cartId' => $this->context->cart->id
      ]);

      return $this->display(__FILE__, '/views/templates/front/doyouinvoice.tpl');
    }

а ТПЛ это как:

<h5>Do you need an invoice?</h5>
<div class="ggAskInvoiceError {if $vat_status == 1}hideThisMessage{/if}">
  {l s="You need to add your VAT number in the billing address." m="ggaskinvoice"}
</div>

<div class="ggAskContainer">
    <label><input type="checkbox" name="askInvoice" id="askInvoice" {if $vat_status == 0}disabled='disabled'{/if} data-cartid="{$cartId}" > {l s="I need an invoice for this order" m="ggaskinvoice"}</label>   
</div>
У вопроса есть решение - Посмотреть?

Ответы - тема 1.7 добавить поле в процессе оформления заказа (и сохранить его) / prestashop 1.7 add a field to checkout process (and save it)

Thomas Neveu

09.10.2018 04:53:54

Возможно, попробуйте использовать инструменты:: isSubmit

Я не уверен, что это может сработать для вас,

Попробуйте создать контроллер в вашем модуле следующим образом: в yourModule / controller / controllerName,

class yourModuleNameModuleFrontController extends ModuleFrontController
{
    public function initContent(){
        parent::initContent();
        $this>setTemplate('module:yourModuleName//views/templates/front/doyouinvoice.tpl');

        if(Tools::isSubmit('askInvoice')){ //askInvoice is your name button
            //Your php code
        }
    }
}

И для DisplayHook я думаю, что вам нужно только сделать это

return $this->display(__FILE__, '/views/templates/front/doyouinvoice.tpl');
https://stackoverflow.com/questions/52704523/prestashop-1-7-add-a-field-to-checkout-process-and-save-it/52722800#comment92371060_52722800
$это>setTemplate('модуль:yourModuleName/вид/шаблоны/передний/doyouinvoice.ТПЛ'​);
Закрыть X