2

いくつかの選択入力を含む単純なフォームがあります。その1つが性別の選択です。

入力は次のように生成されます。

echo $this->Form->input('gender_id', array(
    'options' => array(
        1 => 'Male',
        2 => 'Female'
    )
));

指定された選択のみを送信できるようにして、3などを送信できないようにするにはどうすればよいですか?

セキュリティコンポーネントを使用していますが、フィールド名の改ざんからは保護されているようですが、値の改ざんからは保護されていないようです。

状態選択のような大きな選択リストでは、単純な比較を行うことは実用的ではありません。また、IDを検証するために余分なクエリを実行しないようにしています。

4

2 に答える 2

1

モデルの検証のために、指定されたリストに値が含まれている必要があります。

public $validate = array(
    'gender_id' => array(
      'allowed' => array(
      'rule'    => array('inList', array(1, 2)),
      'message' => 'Please select male or female.'
     )
   )
 );
于 2013-01-04T22:41:49.007 に答える
0

DBのこのフィールドを、許可された値1および2のENUMフィールドにします。

FireBugでDOMまたはPOSTリクエストを操作するだけで、誰かが3番目の値を送信するのを防ぐことはできません。それがDB値ではなく、モデルフォーム検証ルールを介して実行されない場合は、コントローラーで手動で実行する必要があります。あなたの説明によれば、そこにのみこの種の検証が必要です。

于 2012-06-12T01:12:48.393 に答える