2010-07-01 20 views
0

J'essaie d'implémenter la validation de formulaire à l'aide de modèles cakephp. Voici mes extraits de code ...Cakephp: Validation Les erreurs n'apparaissent pas dans la validation des données

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' => 'notEmpty', 
     'required' => true, 
     'message' => 'Name is required' 
    ), 
    'email' => array(
     'emailFormat' => array(
      'rule' => 'notEmpty', 
      'required' => true, 
      'message' => 'Email is required' 
     ), 
     'emailNeeded' => array(
      'rule' => array('email', true), 
      'required' => 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); 
      if ($this->Enquiry->validates()) { 
      // ..... 
      } else { 
       $this->set("errors", $this->Enquiry->invalidFields()); 
      } 
     } 
    } 
} 

Voir ....

// /app/views/nodes/enquire.ctp 
<?php echo $form->create("Node", array("action" => "ask")); ?> 
<?php echo $form->input("name", array(
          "error" => array("class" => "error-message"), 
          "div" => false, 
          "label" => "Name", 
          "size" => "40" 
         )); ?> 
<?php echo $form->input("email", array(
          "error" => array("class" => "error-message"), 
          "div" => false, 
          "label" => "Email", 
          "size" => "40" 
         )); ?> 
<?php echo $form->input("phone", array(
          "label" => "Phone No.", 
          "div" => false, 
          "size" => "30" 
         )); ?> 
<?php echo $form->end("Send");?> 

Mon problème: Sur présentation, la validation de formulaire se produit, la méthode Model-> validates renvoie false, mais les erreurs de validation ne sont jamais affichées. J'ai vérifié le tableau retourné par invalidFields(), tous les messages d'erreur que j'ai définis dans le modèle sont là, mais ils ne sont pas affichés ....

Qu'est-ce que je fais mal?

Cordialement

Répondre

1

Pour moi, le problème est dans votre balise form.

Fondamentalement, si vous validez l'enquête, les champs de l'entreprise doivent avoir les noms suivants: données [Demande] [nom] au lieu de données [Nœud] [nom].

Si vous changez

<?php echo $form->create("Node", array("action" => "ask")); ?> 

à

<?php echo $form->create("Enquiry", array("action" => "ask")); ?> 

Les erreurs doivent apparaître corectly.

Si votre formulaire a mélanger entre nœud et champs d'enquête, puis il suffit de mettre le nom du modèle en face du nom de domaine comme celui-ci:

<?php echo $form->input("Enquiry.email", array(....));?> 
+0

et nous avons trouvé la réponse :) Merci homme. – vikmalhotra