2011-01-30 9 views
1
私は、次の場合の検証ルールを開発する方法を助ける必要がある

に検証を提出しました。エンドユーザは少なくとも1つを選択する必要があります。はカスタム</p> <p>私のCakePHPのWebフォームは、いくつかの動的に生成されたチェックボックスが含まれています... CakePHPの

これらのチェックボックスのいずれも、dbテーブルのフィールドではありません。

そのための検証ルールの作成方法を教えていただけますか?

は、そのような場合のために、どのようにこれらのチェックボックスの下に、エラーメッセージを配置する場所をモデルにも

var $validate = array(
    'topic' => array(
     'rule' => 'myRule', 
     'message' => 'Check on at least one checkbox' 
    ) 
) 

function myRule() { 
    //just give me false to know it works... 
    return false; 
} 

のようなものを追加することで実行しようとしましたか?

advでのtnx!

答えて

0

CakePHPのカスタム検証ルールでは、RegExの代わりに関数を呼び出す場合は、連想配列の最初のパラメータでなければならないので、代わりにこのようになります。

var $validate = array(
    'topic' => array(
     'rule' => array('myRule'), 
     'message' => 'Check on at least one checkbox' 
    ) 
) 

function myRule() { 
    //just give me false to know it works... 
    return false; 
} 

さらに、関数の引数を含める場合は、それらを追加のパラメータとしてルール配列に追加します。

var $validate = array(
    'topic' => array(
     'rule' => array('myRule', 10), 
     'message' => 'Check on at least one checkbox' 
    ) 
) 

function myRule($id) { 
if (array_shift($id) = 10) { 
    return false; 
    } 
} 

http://book.cakephp.org/view/152/Adding-your-own-Validation-Methods

+2

(array_shift($ ID)== 10)であれば... !!! – mark

+0

マークは正しいです、謝罪します。 myRuleの最初の関数引数はフォームの値です。 – Stoosh

+0

はい、私も質問を投稿する前にそれを試しました。同じ問題が残っています...カスタム検証がまったく定義されていないように動作します。 – user198003