Zend Framework:Zend_Validate_Db_RecordExistsと Zend_Validate_Db_NoRecordExistsを調べて、データベーステーブルの列をチェックして、フォーム内の値が名前付き列に表示されているかどうかを確認できます。Zend - バリデータを使ってZend_Formのユーザー名パスワードの組み合わせをチェックできますか?
同じ行の別の列の値に基づいて行を除外することもできます。
これらのバリデータを使用してパスワードがユーザ名と一致することを検証できますか?
これまでのところ、ユーザーが正しいユーザー名と正しいパスワード(ただし、このユーザー名のパスワードは必要ありません)を入力すると、フォームは入力を検証します。明らかに、ログインフォームまたはユーザー名/トークンのアクティベーションフォームの場合、トークンまたはパスワードは同じ行のユーザー名と一致する必要があります。
ありがとうございました。
$this->addElement('text', 'handle', array(
'label' => 'Username:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
array(
'NotEmpty', true, array('messages' => 'You must enter your username.')
),
array(
'Db_RecordExists',
false,
array (
'member_activation',
'member_username'
)
)
)
));
$this->addElement('text', 'validationCode', array(
'label' => 'Code:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
array(
'NotEmpty', true, array('messages' => 'You must enter your validation code.')
),
array(
'Db_RecordExists',
false,
array (
'member_activation',
'member_validationcode'
)
)
)
));
ログインフォームですか?もしそうなら、この目的のために設計されたZend_AuthとZend_Auth_Adapter_DbTableを使わないでください。 –
こんにちはTim。私がしようとしているのは、実際には、アカウントをアクティブにするためのユーザー名に対してトークンを検証するフォームです。ユーザーがアカウントを作成して電子メールで送信すると、トークンが作成されます。彼らはこのフォームに戻り、ユーザー名とアクティベーションコードを入力してアカウントを有効にします。トークンフィールドで検証をしないでフォームをコントローラに送信し、フォームにプレフィックスを付けるデコレータメッセージで検証を失敗すると、トークンフィールドでバリデータを使用しようとしていました。フィールド。ありがとう – 8bitjunkie
ユーザーレコードを取得して手動でトークンを検証し、一致しない場合はフォームにエラーを追加する方が効率的です。 Db_RecordExistsを使用すると、必要でないように見えるトークン列をインデックス化しない限り、非効率になる可能性があります。そうしないと、カスタムバリデーターを作成する可能性があります。 – drew010