erreur inconnue à la validation?
Bonjour J'ai un formulaire sur mon site avec 3 champs a renseigner...
et bizarrement même si tout est ok, il m'affiche une erreur inconnue, je n'arrive pas à trouver d'ou vient le problème?
Voici mon code:
l'action:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| public function reportAction(){
/**
* Formulaire pour prévenir d'un bug
*/
$this->view->headLink()->appendStylesheet(DEFAULT_SKIN_PATH . 'styles/recherches.css');
//$this->_helper->layout->setLayout('1column');
$this->_helper->layout->setLayout('accueil');
$form = new form_Report();
$form->setDefault('url_referer',$this->_getParam('url_referer'));
//Vérifie qu'on envoie les infos par POST
if ($this->_request->isPost()) {
//Récupération des données
$formData = $this->_request->getPost();
//Vérifie la validité des données
if ($form->isValid($formData))
{
//Essaie d'envoie du mail à l'agence
try{
//Template message
$msg = "Nom : " . $form->getValue('name').
"{br}" . "Email : " . $form->getValue('email') .
"{br}" . "Message : " .
"{br}" . $form->getValue('message') .
"{br}" .
"{br}" . "______________________________________________________________________" .
"{br}" . "Ce message vous est adressé à partir du site ".SITE_DOMAIN;
// Défini les séparateur en fonction du type de mail (txt/html)
$brHtml = "<br />";
$brTxt = "\r\n";
// Préparation du mail
$mail = new Pi_Mail();
$mail->setBodyText(str_replace('{br}',$brTxt,$msg));
$mail->setBodyHtml(str_replace('{br}',$brHtml,$msg));
$mail->setFrom('contact@'.SITE_DOMAIN, 'Reporting bug');
$mail->addTo('support@'.SITE_DOMAIN);
$mail->addBcc('kb.pld@calixo.net'); //modification: ajout de mon adresse pour reception anomalie
$mail->setSubject('['.SITE_DOMAIN.'] Contact Report Bug');
if($mail->send()){
$this->_helper->viewRenderer->setNoRender();
echo "<div style='background: #fff;padding: 1em;'>Votre message est envoyé. Nous vous contacterons dès réception de celui-ci.<br />Vous allez être redirigé en page d'accueil dans 3 secondes.</div>";
$this->getResponse()->setRawHeader('Refresh:3; url=' . SITE_ABS_URL);
} else {
throw new Exception("Impossible d'envoyer l'email");
}
} catch (Exception $e) {
foreach ($e->getMessage() as $item => $v) {
foreach ($v as $error ){
$this->view->erreurs[] = $error;
}
}
}
} else {
//Récupère les erreurs et préremplie le formulaire
$this->view->erreurs = array();
$form->setDefaults($formData);
foreach ($form->getMessages() as $item => $v) {
foreach ($v as $error ){
$this->view->erreurs[] = $error;
}
}
}
}
$this->view->formulaire = $this->_helper->getFormModeWrite($form);
} |
voici ma form:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <?php
/*
Formulaire partagé entre le controller register et account (pour gérer le profil)
*/
Class Form_Report extends Zend_Form {
public function init()
{
// Nom
$elt_name = $this->createElement('text', 'name')
->setLabel('Votre nom : ')
->setRequired(true)
->addValidator('NotEmpty', true, array(
'messages' => array(
'isEmpty' => "Donnée manquante : nom")));
$this->addElement($elt_name);
// Email
$elt_email = $this->createElement('text', 'email')
->setLabel('Votre email : ');
$this->addElement($elt_email);
// Message
$elt_message = $this->createElement('textarea', 'message')
->setLabel('Votre message : ')
->setAttrib('rows','6')
->setAttrib('cols','50')
->setRequired(true)
->addValidator('NotEmpty', true, array(
'messages' => array(
'isEmpty' => "Donnée manquante : message")));
$this->addElement($elt_message);
// Url referer
$elt_referer = $this->createElement('hidden', 'url_referer');
$this->addElement($elt_referer);
// Submit
$submit = $this->createElement('submit','submit')
->setRequired(false)
->setIgnore(true)
->setLabel('Valider');
$this->addElement($submit);
//*** Décorators
$this->setElementDecorators(array(
array('ViewHelper') // affiche uniquement l'élément du formulaire sans les messages d'erreurs
));
// buttons do not need labels
$submit->setDecorators(array(
array('ViewHelper'),
array('Description'),
array('HtmlTag', array('tag' => 'p')),
));
$this->setElementFilters(array('StringTrim')); // à mettre à la fin // cf : http://www.nabble.com/Zend_Form-bug-or-am-I-stupid--td16019346s16154.html
}
} |
et ma vue:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <!--<div style="background: #fff; width: 100%; padding: 1em; margin: -1em;">-->
<div style="background: #fff; padding: 1em; ">
<!--<h1 style="margin: -12px -12px 10px">Rapport de Bug</h1>-->
<h1 style="margin: -12px -12px 10px; background: #226284;text-align:center;color:#fff;padding:7px 16px;font-size:16px">Rapport de Bug</h1>
<form action="<?php echo $this->baseUrl(); ?>/index/report" method="post">
<p>Pour alerter l'équipe de <?=SITE_DOMAIN;?> de la présence d'un bug (bogue) sur son site, il vous suffit de détailler votre problème dans le champ ci-dessous.</p>
<?php
if($this->erreurs){
echo '<ul>';
foreach($this->erreurs as $erreur){
echo '<li>'.$erreur.'</li>';
}
echo '</ul>';
}
?>
<p>Votre nom *: <?php echo $this->formulaire['name']['element']; ?></p>
<p>Votre email : <?php echo $this->formulaire['email']['element']; ?></p>
<p>Votre message *: <?php echo $this->formulaire['message']['element']; ?></p>
<br />
<p>* Champs obligatoires.</p>
<?php echo $this->formulaire['submit']['element']; ?>
</form></div> |
Merci d'avance pour votre aide ... ça ne plante pas dans l'action... ça plante après mais ou??