Jump to content

Intégrer formulaire de contact dans fiche produit


Recommended Posts

Bonjour,

 

j'ai intégrer à chaque fiche produit le formulaire de contact du fichier contact-form.tpl or s'il fonctionne bien sur la page de contact normale, sur la fiche produit impossible d'envoyer un message.

 

{if isset($confirmation)}
   <p>{l s='Your message has been successfully sent to our team.'}</p>
   <ul class="footer_links">
       <li><a href="{$base_dir}"><img class="icon" alt="" src="{$img_dir}icon/home.gif"/></a><a href="{$base_dir}">{l s='Home'}</a></li>
   </ul>
{elseif isset($alreadySent)}
   <p>{l s='Your message has already been sent.'}</p>
   <ul class="footer_links">
       <li><a href="{$base_dir}"><img class="icon" alt="" src="{$img_dir}icon/home.gif"/></a><a href="{$base_dir}">{l s='Home'}</a></li>
   </ul>
{else}

   <form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std2" enctype="multipart/form-data">

       <input name="id_contact" type="hidden" value="1" />

           <p class="text">
               <label for="email">E-mail</label>
               {if isset($customerThread.email)}
                   <input type="text" id="email" name="from" value="{$customerThread.email}" readonly="readonly" />
               {else}
                   <input type="text" id="email" name="from" value="{$email}" />
               {/if}
           </p>
           <p class="text">
               <label for="Nom">Nom</label>
                   <input type="text" id="nom" name="from" value="{$nom}" />
           </p>

       <p class="textarea">
           <label for="message">{l s='Message'}</label>
            <textarea id="message" name="message" rows="3" cols="10" style="width:340px;height:220px">{if isset($message)}{$message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea>
       </p>
       <p class="submit">
           <input type="submit" name="submitMessage" id="submitMessage" value="Envoyer votre message" class="button_large3" onclick="$(this).hide();" />
       </p>

</form>

{/if}

 

Je ne vois pas d'où le problème peut venir car le code est le même. Merci pour vos retours :)

Link to comment
Share on other sites

Suite des événements et là j'ai vraiment besoin qu'on me dise si je suis sur la bonne piste ou pas :) J'ai intégré dans le controller : ProductController.php le code de récupération et d'envoie simple de mon petit formulaire :

 

Formulaire dans product.tpl

   <form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="std2">
       <input name="id_contact" type="hidden" value="1" />

               <label for="email">E-mail</label>
		   <input type="text" id="email" name="from" value="{$email}" />

               <label for="Nom">Nom</label>
          	 <input type="text" id="nom" name="from" value="{$nom}" />

           <label for="message">{l s='Message'}</label>
            <textarea id="message" name="message" rows="3" cols="10" style="width:340px;height:220px">{if isset($message)}{$message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea>

           <input type="submit" name="submitMessage" id="submitMessage" value="Envoyer votre message" class="button_large3" onclick="$(this).hide();" />

</form>

 

Dans ProductController.php public function process()

if (Tools::isSubmit('submitMessage'))
       {
           $message = Tools::htmlentitiesUTF8(Tools::getValue('message'));
           if (!($from = trim(Tools::getValue('from'))) OR !Validate::isEmail($from))
               $this->errors[] = Tools::displayError('Invalid e-mail address');
           elseif (!($message = nl2br2($message)))
               $this->errors[] = Tools::displayError('Message cannot be blank');
           elseif (!Validate::isCleanHtml($message))
               $this->errors[] = Tools::displayError('Invalid message');
           elseif (!($id_contact = (int)(Tools::getValue('id_contact'))) OR !(Validate::isLoadedObject($contact = new Contact((int)($id_contact), (int)(self::$cookie->id_lang)))))
               $this->errors[] = Tools::displayError('Please select a subject on the list.');
       }

       if (!empty($contact->email))
               {
                   if (Mail::Send((int)self::$cookie->id_lang, 'contact', Mail::l('Message from contact form', (int)self::$cookie->id_lang), array('{email}' => $from, '{message}' => stripslashes($message)), $contact->email, $contact->name, $from)
                       AND Mail::Send((int)self::$cookie->id_lang, 'contact_form', Mail::l('Your message has been correctly sent', (int)self::$cookie->id_lang), array('{message}' => stripslashes($message)), $from))
                       self::$smarty->assign('confirmation', 1);
                   else
                       $this->errors[] = Tools::displayError('An error occurred while sending message.');
               }

 

Ai-je loupé une étape car à l'envoie le formulaire me marque un message d'erreur "Email Invalide" ?

 

Merci de vos réponses

Link to comment
Share on other sites

  • 3 months later...

En fait le message d'erreur vient de la deuxième partie du code dans le Product Controller. En sachant que "contactP" c'est le nom de mon fichier html et txt.

 

J'arrive pas à voir ce qui cloche

 

if (!empty($contact->email))
{
if (Mail::Send((int)self::$cookie->id_lang, 'contactP', Mail::l('Message from contact form', (int)self::$cookie->id_lang), array('{email}' => $from, '{message}' => stripslashes($message), '{nom}' => $nom), $contact->email, $contact->name, $from)
 AND Mail::Send((int)self::$cookie->id_lang, 'contact_form', Mail::l('Your message has been correctly sent', (int)self::$cookie->id_lang), array('{message}' => stripslashes($message)), $from))
 self::$smarty->assign('confirmation', 1);
else
 $this->errors[] = Tools::displayError('An error occurred while sending message.');
}

Link to comment
Share on other sites

Ca veut sire que les deux conditions du If ne sont pas réunies puisque c'est le else qui passe.

 

Si les conditions ne marchent pas, c'est que la méthode send à renvoyée false et qu'il y a une erreur dans le traitement de mail. Après, pourquoi, difficile à dire sans voir tout le code.

Est-tu sûr de tes templates et de leur emplacement... ?

Link to comment
Share on other sites

  • 3 months later...

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...