Как предотвратить выполнение функции onclick php без щелчка с помощью smarty

#onclick #smarty #prestashop #prestashop-1.6

#onclick #smarty #prestashop #prestashop-1.6

Вопрос:

Мне нужна помощь с шаблоном в prestashop. Чего я пытаюсь добиться, так это того, что когда клиент нажимает на ссылку, он должен вызывать функцию php из моей модели, которая добавляет товар в корзину.

Но кажется, что функция выполняется независимо от того, нажата ссылка или нет. Как только ссылка «прочитана» (я думаю, с помощью Smarty), она выполняется. Как я могу предотвратить это и выполнять функцию только при нажатии на ссылку?

Здесь ниже вы можете найти код моего шаблона.

Заранее спасибо

 <div class="bloc_bouton_recap">
  <h4>Ce produit ne vous convient pas et vous souhaitez reprendre la configuration à zero? <a href="{$link->getModuleLink('formulairemodule')}" name="lien_config" title="Configurateur">Suivez ce lien</a></h4>
  <h3>nbproduxcts : {$cart->nbProducts()}</h3>

</div>
  <div class="bloc_bouton_recap">
    <h4>Ajouter ce produit à <a href="{$link->getModuleLink('formulairemodule')}" class="lien_panier" onclick='{Formulaire::addProduitAuPanier($idproduct)}' >votre panier</a></h4>
    <h3>nbproduxcts : {$cart->nbProducts()}</h3>
</div>
  

Теги h3 предназначены только для отображения количества товаров в моей корзине, а последний всегда отображает на 1 больше, чем остальные.

Ответ №1:

Вы должны поместить в onclick функцию Javascript, а не вызов PHP / Smarty.

В функции Javascript вы должны затем, например, использовать URL-адрес запуска AJAX, где есть скрипт, который добавляет товар в корзину.

Вам нужно изучить Javascript / AJAX, если вы хотите этого добиться. Используя только Smarty и PHP, вы не сможете этого сделать.

Комментарии:

1. Спасибо, я прочитал 2 минуты назад, что smarty фактически выполняет код перед его отображением, поэтому я буду работать с ajax.