Bonjour, voici mon premier post! après avoir visionné le très bon tuto de Grafikart je me suis mis à faire pareil sur mon site prestashop.

Problème je viens juste de commencer et rien ne s'affiche quand les champs ne sont pas rempli!

voici mon code :

<?php 
$useSSL = true; include(dirname( __FILE__ ).'/config/config.inc.php'); 
include(dirname( __FILE__ ).'/header.php'); 
$errors = array(
$errornom'nom']="lalala" 
); 

if(!empty($_POST))
{
extract($_POST);
$valid = true;
        if(empty($nom))
        {
        $valid=false;
        $erreurnom = "vous n'avez pas rempli votre nom";
        }

else {echo "hey coco ! Avant d'appuyer sur envoyer, il faudrait penser à écrire";}
    if($valid){echo "tous les champs sont bons";}
}

$page_name="harlem-shake";

$smarty->assign('page_name', $page_name);
$smarty->display(_PS_THEME_DIR_.'devis.tpl');
include(dirname( __FILE__ ).'/footer.php');
?>

Est un problème avec smarty (propre à prestashop)?

10 réponses


Content
Auteur

Je viens d’essayer... et non!
Une autre solution?

Bonjour,

Je n'ai pas fait ce tutoriel, donc il sera compliqué de vous aider car j'ai l'impression qui me manque quelques lignes de code.

Vous déclarez la variable error qui est un tableau :

$errors = array();

Je me dis que vous allez mettre vos messages d'erreur dans ce tableau.

Les conditions d'erreur :
Si le "post" n'est pas vide, je commence à analiser. Et s'il est vide ? Vous ne faites rien ?
Il faudrait mettre un echo si le post est vide via un else ?

if(!empty($_POST)) {
    //etc...
}
else {echo "hey coco ! Avant d'appuyer sur envoyer, il faudrait penser à écrire";}

2eme point, je vois des variable $errornom/$errorjecpaskoi mais je ne vois jamais quand vous remplissez votre tableau. Ce qui peut poser probleme. Peut-être voulez-vous faire ceci :

$error'nom']="lalala";

Bonne journée.

Bonsoir.
Effectivement je rejoins coloo (comme souvent lol) mais je vois ici un traitement de champ vide mais c'est juste des créa de variables.
Une fois crée , il faut les utilisés et la je suppose que ça se passe côté fichier.tpl de prestashop?
Teste de récupérer les variables dans ton fichier.php et fais les s'afficher dans ton fichier.tpl et ça devrait le faire.
Bon courage et tien nous au jus !

Content
Auteur

Merci Coloo et Lotfi!! Je viens de modifier mon code (voir ci-dessus).

Mais toujours rien... Je dois être maladroit sur mon php mais voici mon tpl :

<div id="page-annexe">
    <div id="titre-page">
        DEMANDEZ VOTRE DEVIS GRATUIT ET IMMEDIAT !
    </div>
    <div>
    <form method="post" action="devis.php">

    <label class="devis" for="nom">Nom :</label><br/>
    <input type="text" name="nom" id="nom"/><br/>
    <span class="errormessage"><?php if(isset($erreurnom)) echo $erreurnom; ?></span>
    <input type="submit" value="envoyer" id="envoiedevis"/>
    </form>
        </div>

</div>

En plus simplifié :

<?php
if(!empty($_POST))
    {
        extract($_POST);
        $valid = true;

        if(empty($nom))
            {
                $valid=false;
                $erreurnom="remplir le nom";
            }

       if($valid)
            {

              echo "coucou";

                    }
                else
                    {
                        $erreur = "Une erreur s'est produite, votre mail n'ai pas parti";
                    }

        }
    ?>
<div id="page-annexe">
    <div id="titre-page">
        DEMANDEZ VOTRE DEVIS GRATUIT ET IMMEDIAT !
    </div>
    <div>
    <form action="devis.php" method="post" 

    <label class="devis" for="nom">Nom :</label><br/>

 <input type="text" name="nom" id="nom" value="<?php if(isset($nom)) echo $nom; ?>"/>
        <span class="error-message"><?php if(isset($erreurnom)) echo $erreurnom; ?></span>

    <input type="submit" value="envoyer" id="envoiedevis"/>

    </form>
        </div>

</div>
Content
Auteur

J'ai le "coucou" qui apparait!
Par contre sur la case "NOM" j'ai cette ligne de code qui apparait :

<?php if(isset($nom)) echo $nom; ?>"/>

Merci beaucoup pour ton aide je sens que je progresse

copies moi ton formulaire, tu as du faire une faute de frappe.

Content
Auteur

Alors voici la partie php suivi du tpl :
Au passage j'ai rien écris dans le $errors = array();

<?php 
$useSSL = true; include(dirname( __FILE__ ).'/config/config.inc.php'); 
include(dirname( __FILE__ ).'/header.php'); 
$errors = array(); 
if(!empty($_POST))
    {
        extract($_POST);
        $valid = true;

        if(empty($nom))
            {
                $valid=false;
                $erreurnom="remplir le nom";
            }

       if($valid)
            {

              echo "coucou";

                    }
                else
                    {
                        $erreur = "Une erreur s'est produite, votre mail n'ai pas parti";
                    }

        }
$page_name="devis";

$smarty->assign('page_name', $page_name);
$smarty->display(_PS_THEME_DIR_.'devis.tpl');
include(dirname( __FILE__ ).'/footer.php');
?>

<div id="page-annexe">
    <div id="titre-page">
        DEMANDEZ VOTRE DEVIS GRATUIT ET IMMEDIAT !
    </div>
    <div>
    <form method="post" action="devis.php">

    <label class="devis" for="nom">Nom :</label><br/>
     <input type="text" name="nom" id="nom" value="<?php if(isset($nom)) echo $nom; ?>"/><br/>
        <span class="error-message"><?php if(isset($erreurnom)) echo $erreurnom; ?></span>

    <input type="submit" value="envoyer" id="envoiedevis"/>
    </form>
        </div>

</div>

Je ne vois pas d'erreur... du moins en reprenant le code que tu as mis. Il doit y avoir " de trop qui est généré par presta... en copiant ton code et en enlevant les variable que je n'ai pas et les include, j'ai un résultat correct.

Regarde sur firebug ou sur l inspecteur d element de chrome pour voir le code généré...

Content
Auteur

Si je trouve la solution, je la partagerai. Mais y a surement une manip avec prestashop qui m’échappe.
Peut être que le codage est différent...