CakePHP - Validation de données d'un formulaire
Posté : 22 oct. 2014, 08:11
Bonjour à tous,
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:
Merci d'avance pour s'être penché sur le problème,
Bonne journée!
Cdlt, DR
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