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:
voici ma form:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
et ma vue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } }
Merci d'avance pour votre aide ... ça ne plante pas dans l'action... ça plante après mais ou??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Partager