2010-09-28 59 views
0

嗨,我已經在模型中進行了自定義驗證。我如何從控制器訪問結果($ visitor)?cakephp驗證響應將數據返回給控制器

型號:

<?php 
class Visitors extends AppModel 
{ 
    var $name = 'Visitors'; 

    var $validate = array(
     'xxx' => array(
      'rule' => array('checkxxx'), 
      'message' => 'yyy.' 
     ) 
    ); 

    function checkIxxx($check){ 
     $visitor = $this->find('first', array('conditions' => $check)); 
     return $visitor; 
    } 

} 

>

在我的控制器

我想這一點:

function start() { 
     $this->Visitors->set($this->data);  
     if($this->Visitors->validates()) 
     { 
      if($this->Visitors->xxx->type == 'value') //this is a value from the $visitor array in the model** 
      { 
       //do something 
      } 

     } 

這可能嗎?

+0

聽起來好像你應該在模型中做到這一點,目標是保持控制器儘可能少的代碼(胖模型,瘦身控制器)。 – dogmatic69 2010-09-28 18:55:26

回答

1

更新爲相關答案,抱歉。

//Model 
var myField = 'invalid'; 

function myValidation($var){ 
    if($var === true){ 
    // Passed your validation test 
    $this->myField = 'valid'; 
    }else{ 
    $this->myField = 'invalid'; 
    } 
} 

// Controller 
$this->Model->set($this->data); 
$this->Model->validates($this->data); 

if($this->Model->myfield == 'valid'){ 
    // Field has passed validation 
} 

你將要使用

$this->Model->invalidFields() 
+0

我在尋找通過它的數據時,它成功驗證 – Mikelangelo 2010-09-28 12:09:04

+0

好吧,沒有任何我知道的。你有沒有嘗試在你的模型驗證功能中設置一個變量,然後在你的控制器中查找它? – 2010-09-28 15:28:32

0

PS:你不遵循蛋糕約定

的模式應該是 「遊客」(單數)

相關問題