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


Shoodey
Auteur
Réponse acceptée

Résolu depuis le temps :)

Et dans ton controller ?

Shoodey
Auteur

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
Auteur

Une solution svp ?