使用smarty-Prestahop从模板获取元素ID

问题描述 投票:0回答:1

我在Prestashop中使用Smarty。在我的php文件中,我建立了如下功能:

public function hookDisplayAdminOrderContentOrder($params)
    {
        $orderId = Tools::getValue('id_order'); // mi prendo l'id dell'ordine per le query sui docId
        $query = 'SELECT docId1, docId1 FROM '._DB_PREFIX_.'orders WHERE id_order=\'' . $orderId . '\';';
        $docId2 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($query)['docId2'];   
        $docId1 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($query)['docId1'];  
        $config_CreaOrdine =  Configuration::get('PS_CREAZIONE_ORDINE');
        $config_CreaFattura =  Configuration::get('PS_CREAZIONE_FATTURA');
                
        // uso order_documents per il contatore nel template
        $order_documents = 0;
        if ($docId1 || $docId2)
            $order_documents++;
        else if ($docId1 && $docId2)
            $order_documents = 2;    
        
        if(!$docId1){
            $message_order = 'documento NON salvato';
            $submit_button_id = 'submit_order'; 
            $submit_label = "Salva Ordine";
        }else{
            $message_order = 'documento salvato';
        }

        if(!$docId2){
            $message_invoice = 'documento NON salvato';
            $submit_button_id = 'submit_invoice'; 
            $submit_label = "Salva Fattura";
        }else {
            $message_invoice = 'documento salvato';
        }
        
      
        smartyRegisterFunction($this->context->smarty, 'function', 'saveDocument', array($this,  'smartyDocument')); // aggiungo la funzione per salvare di nuovo l'ordine
        
        $this->context->smarty->assign('id_order', $orderId);
        $this->context->smarty->assign('config_CreaOrdine', $config_CreaOrdine);
        $this->context->smarty->assign('config_CreaFattura', $config_CreaFattura);
        $this->context->smarty->assign('order_documents', $order_documents); // contatore documenti salvati
        $this->context->smarty->assign('order', $message_order);
        $this->context->smarty->assign('order_docId', $docId1); //docId per tasto ordine
        $this->context->smarty->assign('invoice', $message_invoice);
        $this->context->smarty->assign('invoice_docId', $docId2); //docId per tasto fattura
        return $this->display(__FILE__, 'views/templates/hook/admin_content_order.tpl');
    }

然后在我的admin_content_order.tpl中,我像这样设置按钮名称和ID:

<div class="tab-pane" id="myplugin">

   <table>
      <tbody>
         <thead>
            <tr>
               <td style="padding-left: 20px;"><strong>{l s='Stato ordine' mod='myplugin'}   </strong></td>
               <td style="padding-left: 20px;"><strong>{l s='Stato fattura' mod='myplugin'}  </strong></td>
            </tr>
         </thead>      
      
         <tr>
            <td style="padding-left: 20px;">{$order}</td>
            <td style="padding-left: 20px;">{$invoice}</td>
         </tr>
      
         <tr>
            <td style="padding-left: 20px;">
               {if $order_docId == '' && $config_CreaOrdine eq 1}    
                  <button type="submit" name="submit_order" id="submit_order" class="btn btn-primary" onclick={saveDocument}>Salva Ordine</button>
               {/if}
            </td>
            <td style="padding-left: 20px;">
               {if $invoice_docId == '' && !$config_CreaFattura eq 0}    
                  <button type="submit" name="submit_invoice" id="submit_invoice" class="btn btn-primary" onclick={saveDocument}">Salva Fattura</button>
               {/if}
            </td>
         </tr> 
      </tbody>
   </table>

</div>

最后在我的php文件中,定义了函数“ smartyDocument”。我希望它的行为略有不同,具体取决于按钮ID。有谁知道我如何获取按钮ID并将其传递给“ smartyDocument”功能?我希望一切都清楚,谢谢

prestashop smarty
1个回答
0
投票

加载页面后,您将无法使用任何Smarty命令。您可以改用Javascript函数。

Smarty是服务器端引擎,处理后输出被发送到浏览器,这是非常静态的。

您必须具有Javascript函数才能通过Ajax保存文档:

  1. 将数据发送到PHP
  2. 保存数据
  3. 返回成功或失败消息
© www.soinside.com 2019 - 2024. All rights reserved.