[Tuto formulaire de contact Cake2] Double envoie de mail !

Par Shoodey, il y a 14 ans


Bonjour / Bonsoir...

Je rencontre actuellement un petit soucis. Après avoir finaliser mon formulaire de contact et lors de l'envoi de mail, je ne reçois pas un, mais deux mails simultanés, contenant le même message. J'ai cherché un peu dans mon code, mais je ne trouve pas l'erreur :(

Je vous demande de m'aider à la retrouver, et puis la corriger :)

Mon controller :

<?php
class ContactController extends AppController{
    public $components = array('Session','Security'); 

    function index(){
        if($this->request->is('post')){
            if(!empty($this->request->data'Contact']'tricky'])){
                $this->Session->setFlash("Impossible d'envoyer ce mail","mail", array('type'=>'error'));
                $this->request->data = array(); 
            }else{
                if($this->Contact->send($this->request->data'Contact'])){
                    $this->Session->setFlash("Votre mail nous est bien parvenu","mail");
                    $this->request->data = array(); 
                }else{
                    $this->Session->setFlash("Merci de corriger vos champs","mail",array('type'=>'error'));
                }
            }
        }
    }
}

Mon model :

<?php
class Contact extends AppModel{

    public $useTable = false; 
    public $validate = array(
        'name' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'message' => 'Vous devez entrer votre nom'
        ),
        'phone' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'message' => 'Vous devez entrer votre numéro de téléphone'
        ),
        'email' => array(
            'rule' => 'email',
            'required' => true,
            'message' => 'Vous devez entrer un email valide'
        ),
        'message' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'message' => 'Vous devez entrer votre message'
        )
    );
    public function send($d){
        $this->set($d); 
        if($this->validates()){
            App::uses('CakeEmail','Network/Email');
            $mail = new CakeEmail(); 
            $mail->to(' ***********')
                ->from($d'email'])
                ->subject('Formulaire de contact')
                ->emailFormat('html')
                ->template('contact')->viewVars($d);
            return $mail->send();
        }else{
            return false; 
        }

    }
}?>

Cordialement, Shoodey :)

4 réponses

Grafikart, il y a 14 ans

Et dans ton controller ?

Shoodey, il y a 14 ans

Je vous ai inséré le code du controller, si vous parlez de la vue, la voici :

<?php echo $this->Form->create('Contact'); ?>
    <?php echo $this->Form->input('name',array('label'=>"Nom complet","required")); ?>
    <?php echo $this->Form->input('phone',array('label'=>"Numéro de téléphone","type"=>"phone","required")); ?>
    <?php echo $this->Form->input('email',array('label'=>"Adresse email","type"=>"email","required")); ?>
    <?php echo $this->Form->input('tricky',array('label'=>false,"type"=>"text","class"=>"tricky")); ?>
    <?php echo $this->Form->input('message',array('label'=>"Votre message","type"=>"textarea","required")); ?>
<?php echo $this->Form->end('Envoyer'); ?>
Shoodey, il y a 14 ans

Une solution svp ?

Shoodey, il y a 13 ans

Résolu depuis le temps :)