2010-07-01 67 views
0

我試圖使用cakephp模型實現表單驗證。這裏是我的代碼片段...Cakephp:驗證錯誤未出現在數據驗證中

型號

// 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' 
     ) 
    ) 
    ); 
} 

控制器動作

// /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()); 
      } 
     } 
    } 
} 

查看....

// /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");?> 

我的問題:在提交時,表單驗證發生後,Model-> validates方法返回false,但是驗證錯誤永遠不會顯示。我檢查了invalidFields()返回的數組,我在模型中設置的所有錯誤消息都存在,但它們沒有顯示出來....

我在做什麼錯?

Regards

回答

1

對我來說問題在於你的表單標記。

基本上,如果您驗證詢價,公司字段應該使用以下名稱:data [Inquiry] [name]而不是數據[Node] [name]。

如果更改

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

​​

的錯誤應該corectly出現。

如果你的表單中有節點和查詢字段之間的混合,然後只把名字模型的字段名的前面是這樣的:

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

,我們已經找到了答案:)感謝的人。 – vikmalhotra 2010-07-01 06:55:23