0

ユーザー名、電子メール、電子メールの確認、パスワード、およびパスワードの確認フィールドを含む簡単な新規アカウント作成ページがあります。すべての検証は User モデルの下で行われ、現在、すべての入力フィールドが必須です。

ユーザーがログインすると、メールとパスワードを更新できる設定ページが表示されます。入力フィールドは、電子メール、電子メールの確認、パスワード、およびパスワードの確認です (ユーザー名フィールドのないアカウント ページの作成と同じ入力フィールド)。ただし、フィールドを必要とせずに、設定の下で検証を異なるものにしたいと考えています。新規アカウント作成ページの検証ルールに影響を与えずに、この問題にどのように対処すればよいでしょうか? あなたの助けに感謝します。

4

2 に答える 2

2

CakePHP が考えているように、「必須」のフィールドが本当に必要なようには見えません。

CakePHP に関する限り、「必須」とは、そのモデルが保存されるたびにそのフィールドを送信する必要があることを意味します。フィールドにコンテンツがあるかどうか ('notEmpty') とは関係ありません。

したがって、あなたのケースでは、おそらく各フィールドに通常のデータ検証ルールを設定するだけで済みます (つまり、minLength、notEmpty、有効なメール...などなど)。両方のページで問題ありません。送信されたデータはすべて合格する必要があります。検証 - 送信されていない場合、大したことはありません。

いつでも設定できます:

'required' => 'create' //or update

保存または更新のためにそのフィールドがデータに存在することを確認する必要がある場合...しかし、私は個人的にそれが必要だとは思っておらず、あなたが説明したような多くのページを作成しました。

[ここ]の本によると:

required => true は、検証規則 notEmpty() と同じ意味ではありません。required => true は、配列キーが存在する必要があることを示します。値が必要であるという意味ではありません。したがって、フィールドがデータセットに存在しない場合、検証は失敗しますが、送信された値が空 ('') の場合、(ルールによっては) 成功する可能性があります。

于 2012-09-01T04:07:31.110 に答える
0

'on'次のように使用できます。

array(
        'rule' => 'required',
        'on'   => 'create' // or 'update'
)

または、コントローラーで検証の設定を解除することもできますが、最初の方がクリーンです。

于 2012-09-01T01:45:27.630 に答える