Aller au contenu

Gestion d'erreurs + smarty


aSiDe

Sujets conseillés

Bonjour,

Je suis actuellement sur un projet pour l'école qui doit être fait avec smarty, c'est la première fois que j'utilise ce système et je suis un peu perdu car toutes mes habitudes (php+html dans la même page) doivent changée et c'est pas très évident surtout que comme dit dans ma présentation je suis un peu rouillé...

Je vous explique donc un de mes problèmes, j'ai un formulaire sur lequel je veux vérifier que tous les champs ont été remplis avant de faire la preview des données à insérer

J'utilise donc ceci:


if(empty($_POST['langue']))
{
echo "Le champs synopsis est obligatoire";
}
if(empty($_POST['duree']))
{
echo "Le champs durée est obligatoire";
}
if(empty($_POST['soustitre']))
{
echo "Le champs soustitre est obligatoire";
}

Mais à la place des echo j'aimerais un systeme de gestion d'erreur qui puisse réafficher le formulaire avec les erreurs à coté des champs qui n'ont pas été remplis (ou plus simplement une class qui mettrait les input non remplis en rouge). Avant j'utilisais une variable $code qui additionnais les chiffres et qui affichait les erreur en fonction du nombre final mais je n'arrive pas à insérer ce système dans la logique de smarty...Si vous avez des bout de code, des idées, des conseils pouvant m'aider je suis preneur de tout!

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Le principe de smarty est d'isoler les traitements de l'affichage.

Si on lit ton code initial, on se rend compte que le traitement (test des valeurs des $_POST) est mélangé à l'affichage (on le voit, car ton code est bourré de 'echo').

On pourrait utiliser un code de ce type :


$erreur = array();

if(empty($_POST['langue']))
{
$erreur['langue'] = "Le champs synopsis est obligatoire";
}
if(empty($_POST['duree']))
{
$erreur['duree'] = "Le champs durée est obligatoire";
}
if(empty($_POST['soustitre']))
{
$erreur['soustitre'] = "Le champs soustitre est obligatoire";
}

Ensuite tu envoies à smarty ton tableau $erreur.

Sur le formulaire :

pour le champs xxx

{if (isset($erreur['xxx']))}
<input type="text" name="xxx" value="" class="enrouge" /><br />
{$erreur.xxx}
{else}
<input type="text" name="xxx" value="" class="" /><br />
{/if}

Voilà pour l'idée.

Pour améliorer, si tu as plusieurs <input type="text">, dans ce cas, crée des éléments réutilisables.

Je en suis plus trop sûr de la syntaxe Smarty, mais on doit s'approcher de ça

Bon courage

Modifié par pluriels
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...