Bonjour à tous j'ai un formulaire de contact classique sous cakephp et j'aimerai rajouté un champ pièce jointe et permettre à l'utilisateur de transmettre aussi des fichiers via le formulaire de contact ! je ne trouve pas sur la doc un paragraphe qui parle de ça ! somedy help me please !

4 réponses


Tu n'as pas du bien cherché :D

CakeEmail addAttachments et CakeEmail attachments

Après pour le reste je te laisse voir ;)

ndiayejp
Auteur

Oui mais y a aucun exemple qui montre comment attacher une pièce jointe à partir d'un formulaire

CakeMail attachment

Après pour attacher le fichier à partir d'un formulaire, tu fait comme pour uploader un fichier. Tu le met dans un dossier sur ton site, tu l'attache à ton email avec le morceau de code qu'on voit sur le lien que j'ai donné et tu le supprime une fois que l'email est envoyé !

Oublie pas de faire des vérifications pour savoir si le champ du fichier est bien remplit, si l'extension du fichier est bien correcte etc...

ndiayejp
Auteur

j'ai essayé de faire comme tu as dis mais ça marche pas un petit coup de main serait le bienvenue ! voici mon code sous forme de fonction

public function send($d){
        $this->set($d);
        if($this->validates()){
            App::uses('CakeEmail', 'Network/Email');
            $mail = new CakeEmail();
             if(isset($d'document'])){
                   $dir = IMAGES.'docs';
                    if(!file_exists($dir))
                        mkdir($dir,0777);

                    $f = $d'document']'name'];
                    move_uploaded_file($d'document']'tmp_name'],$dir.DS.$f);
                    $mail->to('ndiayejp@gmail.com')
                            ->from($d'email'])
                            ->subject('Demande de Cotation')                   
                            ->emailFormat('html')                           
                            ->template('cotation')->viewVars($d);
                            ->attachments(array($f=> array(
                                    'file' => '../img/docs/'.$f,

                            ));

             }

                        return $mail->send();

        }
        else {return false;}
    }