Coucou :)
voila j'ai suivi le tutoriel de formulaire de contact avec cakePHP une fois puis une deuxième et enfin une troisième, a chaque fois, j'ai le même problème, je n'arrive pas a accéder au formulaire une fois qu'il est fini, ni en local ni en ligne.

Voila mes codes :
le model Contact.php :

<?php
class Contact extends AppModel {
    public $useTable = false;
    public $validate = array(
        'name' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'message' => 'Vous devez entrer votre nom.'
        ),
        'email' => array(
            'rule' => 'email',
            'required' => true,
            'message' => 'Vous devez entrer un email valide.'
        ),
        'message' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'message' => 'Vous devez entrer un message.'
        ),
    );

    public function send($d) {
        $this->set($d);
            if (this->validates()) {
            App::uses('CakeEmail','Network/Email');
            $mail = new CakeEmail();
            $mail->to('nicolas@groelly.fr')
                 ->from($d'email'])
                 ->subject('Contact :: ')
                 ->emailFormat('html')
                 ->template('contact')
                 ->viewVars($d);
            return $mail->send();
        } else {
            return false;
        }
    }
}
?>

le controller ContactController.php :

<?php
class ContactController extends AppController {

    function index(){
        if ($this->request->is('post')) {
            if($this->Contact->send($this->request->data'Contact'])){
                $this->Session->setFlash('Votre message nous a bien été transmis.');
                $this->request->data = array();
            } else {
                $this->Session->setFlash('Votre message n\'a pas pu etre envoyer.');
            }
        }
    }
}
?>

et la vue index.ctp :

<?php $this->set('title_for_layout','Me contacter'); ?>
<?php echo $this->Form->create('Contact'); ?>
    <?php echo $this->Form->input('name',array('label'=>'Nom :')); ?>
    <?php echo $this->Form->input('email',array('label'=>'Email :')); ?>
    <?php echo $this->Form->input('message',array('label'=>'Votre message :','type'=>'textarea')); ?>
<?php echo $this->Form->end('Envoyer'); ?>

Merci pour votre aide :)

2 réponses


philieric
Réponse acceptée

class ContactController extends AppController met un s à Contacts (ContactsController) et aussi le signe $ à $this->validates() dans le model Contact dans la fonction send

Le "$" suffisait :)
Merci ! :) Sujet résolut :)