1

DataMapper ORMで CodeIgniter 2 を使用しています。ユーザーの場合、データベースのフィールドではないフィールド (およびその他のフィールド) があります (テーブルにconfirm_passwordはこれらのフィールドはありません) が、サインアップ フォームに表示するためだけに存在します。confirm_emailusers

confirm_passwordこれらの 2 つのフィールド (およびconfirm_email) がフォームに存在しないバックエンドもあります。

public $validation = array(
'first_name' => array(
    'label' => 'lang:common_first_name',
    'rules' => array('required', 'trim')
),
'last_name' => array(
    'label' => 'lang:common_last_name',
    'rules' => array('trim')
),
'email' => array(
    'label' => 'lang:common_email',
    'rules' => array('required', 'trim', 'unique', 'valid_email')
),
'confirm_email' => array(
    'label' => 'lang:common_confirm_email',
    'rules' => array('matches' => 'email')
),
'password' => array(
    'label' => 'lang:common_password',
    'rules' => array('required', 'min_length' => 6, 'encrypt')
),
'confirm_password' => array(
    'label' => 'lang:common_confirm_password',
    'rules' => array('matches' => 'password')
)

);

confirm_emailまたはconfirm_emailフィールドを必須にしないと、バリデーターは一致ルールをトリガーしません。それらをrequiredにすると、これらのフィールドを持たないバックエンドがconfirm_emailandconfirm_passwordをトリガーしますが、そうすべきではありません。

  • アプリケーションに含める可能性のあるすべての検証ルールを (もちろんモデルに) 含めるのが最善でしょうか?
  • バックエンドにユーザーを追加するときに、コントローラーでこれらのルールを変更する (たとえば、配列confirm_emailからインデックスを削除する) ことは良い考え ですか?$validation

どんな考えでも感謝します。ありがとう

4

1 に答える 1

0

ドキュメントによると、データベース以外のフィールドを追加できるORM Mapperの最新バージョンがありますか。

http://stensi.com/datamapper/pages/validation.html

また、「電子メール アドレスの確認」や「パスワードの確認」など、データベース テーブル以外のフィールドの検証ルールを追加できるようになりました。例えば:

確認フィールドに必要なルールは必要ありません-DBでフィールドが必要であることを示しているため、DBエラー)、- matchesプロパティは、一致したフィールドに対して必要な検証を行います(たとえば、一致しない場合)エラーがスローされます。) つまり、「email」フィールドで必要なだけで、フィールドが一致しない場合、confirmation_email はエラーをスローします。空のフィールドでは、メールが必要であることを示す必要があります。

最後に、インデックスを削除できますが、一般的にそれは良い考えではありません。上記が失敗した場合は、代わりに、コントローラーにフォーム検証ルールを追加します。

于 2012-12-01T02:29:55.870 に答える