Jump to content

[SOLVED] - Appel d'une fonction php depuis un fichier tpl


Recommended Posts

 

Bonjour, 

Je développe un module permettant de récupérer les clients d'un certain groupe, de selectionner le client, puis de lui envoyer un email depuis le BO admin. Je récupère la liste des clients et je peux en choisir un. Cependant je n'arrive pas à lier une action (= fonction PHP) au button de mon fichier TPL du module.

 

Comment procéder (en passant par du JS ou non) ?

 

customsignup.php

public function displayForm()
  {
      // Get default language
      $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
  
      // Requete MYSQL
      $rq ='select * from `'._DB_PREFIX_.'customer` where `id_default_group` = 4';
      $result = Db::getInstance()->ExecuteS($rq);

      $this->context->smarty->assign(
        array(
            'my_module_name' => Configuration::get('CUSTOM_SIGNUP'),
            'customers' => $result
        )
      );

    return $this->display(__FILE__, 'mycustomsignup.tpl');

  }

 

mycustomsignup.tpl 

 

<select id="client_select">
<option> -- Select client </option>
{foreach $customers as $customer}
    <option value = {$customer.id_customer}>
        {$customer.firstname} {$customer.lastname}  -  {$customer.company} 
    </option>
{/foreach}
</select>
<br>
<button id="show_client_btn" type="button" class="btn btn-default" > Send Email </button>

 

Edited by Jean-Baptiste (see edit history)
Link to comment
Share on other sites

Bonjour.

Il faut vous pencher sur la documentation qui explique comment créer un module Prestahop et en particulier la partie qui traite du HelperForm puisque c'est elle qui permet de générer des formulaires en back-office.

Et il y aussi des choses à revoir :

- vous créez une variable $default_lang mais vous ne vous en servez pas

- pour transmettre le nom du module à Smarty il suffit de faire $this->name

- la classe Group a une méthode getCustomers() donc pas la peine de recréer  une requête SQL pour ça.

Link to comment
Share on other sites

Bonjour @BecomeWeb, 

Merci pour les informations. La variable $default_lang est un résidu d'un copier coller, je ne m'en sers pas effectivement. Il y a t-il un avantage à utiliser la fonction getCustomers() au lieu de faire directement une requête SQL ? Je n'utilise finalement pas HelperForm mais directement du html et les variables transmises du fichier php au tpl grâce à la fonction $this->context->smarty->assign() pour plus de souplesse.

J'ai terminé le développement de mon module, la réponse que j'attendais dans l'input action du form est : AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'), que je fais passer via le context pour la récupérer dans mon fichier tpl. Je peux ensuite traiter les informations de mon form dans la fonction getContent()  en testant la valeur de la variable Tools::isSubmit(). 

 

@doekia D'après vos récentes réponses sur les sujets du forum, vous semblez peu enclin à aider les débutants sur prestashop en répondant de manière détestable. J'observe également que vous n'arrivez pas configurer correctement votre certificat SSL votre site web de contact. N'hésitez pas à me contacter si vous rencontrez des difficultés, vous pourriez alors peut être m'offrir des cafés à 3€.

 

Edited by Jean-Baptiste (see edit history)
Link to comment
Share on other sites

SSL ? contact? où ?  vu - merci! encore les cordonniers les plus mal chaussés!

Tu te rends bien compte que personne ne peux te proposer la réponse que tu attendais avec la question que tu avais posé ?

Et débutant c'est une chose mais ne pas savoir qu'il faut un <form> pour envoyer des données, désolé mais c'est la preuve de n'avoir aucune compétence. Après si tu avais ce form dans ton tpl et que tu l'avais caché, désolé je ne suis pas devin.

 

Regarde mieux l'ensemble de mes réponse pour juger, il n'y a pas 3 minutes j'ai eu quelqu'un a qui je dis: "caractère dièse, le caractère sur la touche 3 de votre clavier sur un clavier français"  et qui me répond "mais comment on fait, car ça me fait 3 ou " - Et désolé mais oui je lui ai répondu d'arrêter l'informatique!

Edited by doekia (see edit history)
Link to comment
Share on other sites

19 hours ago, Jean-Baptiste said:

Je n'utilise finalement pas HelperForm mais directement du html et les variables transmises du fichier php au tpl grâce à la fonction $this->context->smarty->assign() pour plus de souplesse.

Tu as réussi avec des méthodes traditionnelles et ça fait le taf. Mais penche toi quand même sur le fonctionnement du helper. Au début tu mettras un peu de temps à l'assimiler mais une fois que tu t'y seras fait tu gagneras du temps.

Il renseigne les attributs du formulaire, génère du markup "Bootstrap" et pour certains inputs comme les switchs tu gagnes un temps fou.

Edited by BeComWeb
Piaf (see edit history)
  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...