J'essaie d'implémenter la validation de formulaire en utilisant des modèles cakephp. Voici mes extraits de code ...Problème de validation de modèle dans Cakephp
Modèle
// File: /app/models/enquiry.php
class Enquiry extends AppModel {
var $name = "Enquiry";
var $useTable = false;
var $_schema = array(
"name" => array("type" => "string", "length" => 100),
"phone" => array("type" => "string", "length" => 30),
"email" => array("type" => "string", "length" => 255)
);
var $validate = array(
"name" => array(
"rule" => array("minLength" => 1),
"message" => "Name is required"
),
"email" => array(
"emailFormat" => array("rule" => "notEmpty", "last" => true, "message" => "Email is required"),
"emailNeeded" => array("rule" => array("email", true), "message" => "Must be a valid email address")
)
);
}
action contrôleur
// /app/controllers/nodes_controller.php
class NodesController extends AppController {
var $name = "Nodes";
var $uses = array("Enquiry");
function enquire() {
if ($this->data) {
$this->Enquiry->set($this->data);
$this->Enquiry->set("data", $this->data);
if ($this->Enquiry->validates(
array("fieldList" => array("name", "email"))
)) {
// .....
}
}
}
}
Voir ....
// /app/views/nodes/enquire.ctp
<?php echo $form->create("Node", array("action" => "ask")); ?>
<?php echo $form->input("name", array("label" => "Name")); ?>
<?php echo $form->input("email", array("label" => "Email")); ?>
<?php echo $form->input("phone", array("label" => "Phone")); ?>
<?php echo $form->end("Send");?>
Mon problème: Sur présentation, la la forme ne valide jamais. La fonction validate renvoie true à chaque fois, même si je ne saisis rien dans le formulaire.
Qu'est-ce que je fais mal?
Cordialement
Ce fonctionne. Maintenant, je vois le $ this-> Model-> validates() retournant false, mais je ne vois toujours pas les messages d'erreur apparaissant. Dois-je utiliser la méthode invalidate() dans mon modèle? – vikmalhotra
Je viens de vérifier la matrice invalidFields et il affiche les champs invalides là. Mais les messages d'erreur n'apparaissent pas dans la forme .... – vikmalhotra
C'est étrange. Essayez '$ form-> error ('email');' – bancer