2016-01-04 46 views
-3

如果條件爲真,則應顯示錯誤消息「已退出」,否則應顯示消息「成功」。如何給CAKEPHP驗證?

是否有可能像這樣添加一個驗證的模型部分:

$name = $_POST["name"]; 
$validation_sql = "SELECT COUNT(*) > 0 FROM college WHERE status='2' AND name='$name'"; 
+2

請閱讀[驗證](HTTP手動部分://book.cakephp。組織/ 2.0/EN /模型/數據validation.html)。您需要的規則是[isUnique](http://book.cakephp.org/2.0/en/models/data-validation.html#Model::Validation::isisique)。 –

+1

如何在同一時間使用三個CakePHP版本?正確標記你的東西! – burzum

回答

0

您可以使用hasAny()作爲解決方案:

$conditions = array(
    'status'=>'2', 
    'name'=>$name 
); 
if ($this->XXXXXXX->hasAny($conditions)){ 
    //do something 
} 

hasAny將返回true如果發現其他false

注意:hasAny不3.x版本

0

您可以像模型添加服務器驗證可用:

public $validate = array(
    'name' => array(
     'rule' => array('isUnique', array('name'), false), 
     'message' => 'This name has already been used.' 
    ) 
); 
0

不建議在使用$ _ POST CakePHP完全可以使用控制器中的Request對象來訪問POST請求給出的數據:

$this->request->data['College']['name']; 

然後可以將此信息傳遞給驗證的模型。

如果發佈請求是由CakePHP表單助手創建的,則不需要訪問它 - 您可以直接將數據傳遞給模型實例的save方法(請參閱CakePHP Handbook - Saving your data)。

if ($this->College->save($this->request->data)) { 
// handle the success (Normally success flash) 
} 
debug($this->College->validationErrors); //Normally error flash - if FormHelper is used the error messages are automatically shown beside the input elements 

該驗證可以與Bake Console或手動通過添加validation rules向學院型號代碼被添加:

public $validate = array(
    'name' => array(
     'rule' => 'isUnique', 
     'message' => 'This username has already been taken.' 
    ) 
);