bonjour
j'ai comme l'impression que tu n'as pas bien assimilé le principe même du mvc. dès lors que tu adopte une telle structure, tu dois te dire que chaque fonctionnalité de ton site résulte d'une application(composant). en dehors des fichiers qui constituent le socle même de ton achritecture(controller.php, model.php, dispatcher.php), tu ne dois faire appel à des librairies externe que si celà est nécessaire. en clair, inclure des librairies au niveau du dispatcher ne fera qu’alourdir le site car celle-ci seront chargées même pour les pages dont elles n'ont aucune utilité. pour phpmailer par exemple, tu ne doit de ne l'inclure et l'instancier qu'au moment d'envoyer ton mail; pas dans le dispatcher , ni dans le controller principal.
exemple:
si ton site possède un formulaire de contact(page de contact), alors parmi les applications de ton site on doit en trouver une qui se nomme "contact". si tu souhaite qu'à chaque soumission de formulaire une copie soit expédiée dans la boite mail de l'admin ou tout simplement une notification, dans la méthode "index()" (c'est la vue index qui contient le formulaire) du controller on aura grosso modo ceci:
class contactController extends Controller
{
/**
*
*
**/
public function index()
{
$d =array();
if( !$this->Session->isExpired() and $this->request->Postdata )
{
$this->loadModel('Contact');
if(!$this->Contact->validates($this->request->Postdata)) //validation du formulaire
{
$this->Session->setFlash($this->Contact->errors, 'error');
return false;
}
$mailTo = 'admin@email.site';//email de l'admin peut provenir de la bdd
/* the email body */
$msg='Expéditeur: '.$this->request->Postdata->name.'<br />Son Email: '.$this->request->Postdata->email.'<br />Adresse IP: '.ipAddress().'<br /><br />
Message:<br /><br />'.nl2br($this->request->Postdata->message);
require 'chemin_vers_la _classe_phpmailer';
$mail = new phpMailer(); /* using PHPMailHelper */
$mail->IsMail();
$mail->AddReplyTo($this->request->Postdata->email, $this->request->Postdata->name);
$mail->AddAddress($mailTo);
$mail->SetFrom($this->request->Postdata->email, $this->request->Postdata->name);
$mail->Subject = ucfirst($this->request->Postdata->title);
$mail->MsgHTML($msg);
//$mail->AddAttachment('images/phpmailer.gif'); // attachment
//$mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
if(!$mail->Send())
{
$this->Session->setFlash( $mail->ErrorInfo, 'error');
}
else
{
$this->Session->setFlash( 'Message envoyé!', 'success');
//$this->redirect('');
}
}
$this->set($d);
}
}