Salut,
Merci pour ta réponse.
1- C'est ce que j'ai fait, mais je ne comprenais pas au début le rôle de ce PagesController...
2- J'ai donc mes liens dans le layout, dans le menu.
Pourquoi mettre les pages dans le PagesController?
--> Pour la page contact, j'ai crée un ContactController, et ajouté une vue dans view/contact/(index.php)
Si je veux faire une page "Espace perso", dois-je créer une action EspacePerso dans PagesController?
Pour l'instant mon espace membre est comme ceci: j'ai crée un MembresController avec une action EspacePerso...
Pour l'ajax, mon problème est résolu: j'ai crée un AjaxController global dans lequel je mettrai toutes mes actions AJAX.
Concernant ta méthode : "3 - Pour l'ajax, originale ta méthode, l'astuce consiste à ne pas mettre de layout, donc dans ton controller AjaxController, je rajouterai public $layout = null ou public $layout = 'ajax', ", c'est exactement ce que j'ai fais: dans la méthode ajaxRender (postée plus haut), je ne fais pas de rendu du layout.
Ma fonction mail() dans l'AjaxController fonctionne maintenant (il me renvoyait le layout car j'avait un rendu automatique du layout par défaut dans le dispatcheur).
public function mail(){
$form = array('name' => '',
'mail' => '',
'subject' => '',
'message' => '');
$requiredFields = array('name' => '', 'subject' => '', 'message' => '');
// Recuperation des donnees en POST si des donnees ont ete postees
if ($this->request->postExists('name') && $this->request->postExists('message') && $this->request->postExists('subject')){
foreach ($form as $k => $v){
$form$k] = $this->request->postData($k);
}
// Verification du formulaire (erreurs ?)
$errors = getErrors($form, $requiredFields);
if(!empty($errors)){
//Traitement du formulaire envoyé et mail()
$subject = 'Un nouveau message vient d\'etre envoyé par le site Bibliotheque_mvc :"';
$subject .= $this->request->getPost('subject').'"';
$mail = new Mail(ADMIN_MAIL, $subject);
if ($mail->send()){
$message = "Message envoyé!";
$this->set('message', $message);
$this->ajaxRender('mail');
}
}else{
$message = "Les champs suivants comportent des erreurs : ";
$this->set(array('errors' => $errors, 'message' => $message));
$this->ajaxRender('mail');
}
}
}
Dans la vue /view/ajax/mail.php, je fais juste un echo du message et cela fonctionne.
Merci.