Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-02-2013 16:16:30

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Erreur Inconnue ??

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:

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 &ecirc;tre redirig&eacute; 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:

<?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:

<!--<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'&eacute;quipe de <?=SITE_DOMAIN;?> de la pr&eacute;sence d'un bug (bogue) sur son site, il vous suffit de d&eacute;tailler votre probl&egrave;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??

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages