2012-05-02 13 views
2

ことができケーキPHPの検証クリア入力フィールドの値はケーキPHPの検証クリア入力フィールド値が

var $validate = array(
    'name' => array(
     'isUnique' => array (

      'rule' => 'isUnique', 

      'message' => 'This Person name already exists.' 
     ) 
    ) 
); 

、私はnameフィールドの値をクリアしたいです。それはケーキのPHPの検証自体を行うことが可能ですか?

答えて

0

必要に応じてカスタムの検証ルールを使用して行うことができます。

var $validate = array(
    'name' => array(
     'isUnique' => array (
      'rule' => 'ifNotUniqueClear', // use custom rule defined below 
      'message' => 'This Person name already exists.' 
     ) 
    ) 
); 

function ifNotUniqueClear(&$data) { 
    $field = key($data); 

    // see if the record exists 
    $user = $this->find('first', array(
     'conditions' => array(
      $field => $data[$field] 
     ), 
     'recursive' => -1 
    )); 

    if ($user) { 
     // unset or empty it, your choice 
     unset($this->data[$this->alias][$field]); 
     return false; 
    } 

    return true; 
} 
+0

私は上記のコードで試しましたが、対応するテキストフィールドはクリアされません。 'print_r($ this-> data)'の場合、対応する変数は設定されていませんが、入力フィールドには対応する値が表示されます。 –

+0

検証ルール内で '$ this-> data'をチェックしましたか?それは妥当性検査のルールになっていますか?ユーザ(妥当性検査ルールで 'debug($ user)')を見つけますか? – jeremyharris

+0

はい、 '$ this-> data'は検証ルールの中にあります。 'debug($ user)'は対応する '$ user'の詳細を配列します。 –

関連する問題