Débutant avec le framework CakePHP, j'ai un souci au niveau de la validation de mon formulaire "Contact".
Voici comment je procède:
Index.ctp:
<?php echo $this->Html->css('contacts', null, array('inline' => false)) ?>
<?php echo $this->Html->script('http://maps.google.com/maps/api/js?sensor=false',array('inline' => false)); ?>
<?php echo $this->Html->script('jquery.gmap.js',array('inline' => false)); ?>
<?php echo $this->Html->script('contacts.js',array('inline' => false)); ?>
<div id="contacts">
<div class="container">
<div id="contact">
<h2>CONTACT</h2>
<?php echo $this->Form->create(false, array('url' => array('controller' => 'contacts', 'action' =>'index'))); ?>
<?php echo $this->Form->input('firstname', array('label' => 'Prénom *', 'required')); ?>
<?php echo $this->Form->input('lastname', array('label' => 'Nom *', 'required')); ?>
<?php echo $this->Form->input('societe', array('label' => 'Société')); ?>
<?php echo $this->Form->input('phone', array('label' => 'Téléphone*', 'required')); ?>
<?php echo $this->Form->input('email', array('label' => 'E-mail *', 'type' => 'email', 'required')); ?>
<?php echo $this->Form->input('message', array('label' => 'Message *', 'type' => 'textarea', 'required')); ?>
<?php echo $this->Form->end('Envoyer'); ?>
<hr class="hidden" />
</div>
</div>
</div>
</div>
ContactsController.php:<?php
App::uses('AppController', 'Controller');
App::uses('CakeEmail', 'Network/Email');
class ContactsController extends AppController{
public $helpers = array('Html','Form');
public function beforeFilter(){
$this->Auth->allow('index');
parent::beforeFilter();
}
function index(){
$this->set('title_for_layout', " Nous Contacter - Admins");
if(!empty($this->request->data)){
$message = "";
$message .= "Prénom : ".$this->request->data['firstname']."\n";
$message .= "Nom : ".$this->request->data['lastname']."\n";
$message .= "Société : ".$this->request->data['societe']."\n";
$message .= "Téléphone : ".$this->request->data['phone']."\n";
$message .= "Email : ".$this->request->data['email']."\n";
$message .= "Message : ".$this->request->data['message']."\n";
$this->Contact->set($this->request->data);
if($this->Contact->validates()){
$Email = new CakeEmail();
$Email->from(array('[email protected]' => 'Admin Resorts'));
$Email->to('[email protected]');
$Email->subject('Contact depuis le site internet');
$Email->send($message);
}else{
}
}
}
}
?>
Contact.php:<?php
class Contact extends AppModel{
var $name = 'Contact';
var $useTable = false;
// Règles de validation des données
var $validate = array(
'firstname' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => "Veuillez écrire votre prénom."));
}
/*
public $validate = array(
'firstname' => array(
'allowEmpty' => false;
'message' => 'Veuillez entrer votre prénom.'
),
'lastname' => array(
'rule' =>'notEmpty',
'message' => 'Veuillez entrer votre nom.'
),
'email' => array(
'rule' => array('email',true),
'message' => 'Veuillez entrer une adresse email valide.'
),
'message' => array(
'rule' => 'notEmpty',
'message' => 'Veuillez entrer un message.'
),
'phone' => array(
'rule' => 'notEmpty',
'message' => 'Veuillez entrer un numéro de téléphone'
),
);
*/
?>
Et quand je teste, je peux voir que seul les informations de base de l'input contenu dans "index.ctp" sont appliqués, c'est à dire, le "required" par exemple. Avez-vous une idée de ce que j'ai omis ?Merci d'avance pour s'être penché sur le problème,
Bonne journée!
Cdlt, DR