1

Zend Framework:Zend_Validate_Db_RecordExistsとZend_Validate_Db_NoRecordExistsを調べ、データベーステーブルの列をチェックして、フォームの値が名前付きの列に表示されるかどうかを確認できることを確認しました。

また、同じ行の別の列の値に基づいて行を除外できることも確認しました。

これらのバリデーターを使用して、パスワードがユーザー名と一致することを検証することは可能ですか?

これまでのところ、私のフォームでは、ユーザーが正しいユーザー名と正しいパスワードを入力した場合(ただし、必ずしもこのユーザー名のパスワードではありません!)、フォームは入力を検証します。明らかに、ログインフォームまたはユーザー名/トークンアクティベーションフォームの場合、トークンまたはパスワードは同じ行のユーザー名と一致する必要があります。

ありがとう。

$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'
                    )

                )

        )           

    ));
4

2 に答える 2

2

Zend_Validateに認証を靴べらできますか?絶対?

あなたはすべきですか?地獄はありません。

もしそうなら、あなたは懸念を混ぜ合わせています。実は境界線のZend_Validate_Db_RecordExistsようなものですが、便利です。

しかし、検討している道を進むと、実際にはそうではないのに、ほとんどすべてが検証になります。ACLチェックなど、あらゆる種類のことを自分でやっつけていることに気付くかもしれません。

検証は、ほとんどの場合、物事の形式に関係する必要があります。データの永続性やACLシステムなどに依存関係を追加すると、まとまりが増します。これにより、コードのテスト、デバッグ、または変更が困難になります。

検証にはZend_Validateを使用します。文字列が長すぎないことを確認してください。これらのintが>=0であることを確認してください。米国の電話番号が10桁であることを確認してください。

しかし、より深いチェックを行う必要があり、それが永続性レイヤーを掘り下げ、すべてがビジネスロジックに関するものである場合は、単純なフォーム検証から遠く離れた場所でそれを行う方がよいでしょう。

于 2011-10-22T03:45:17.923 に答える
0

検証に固執するZend_Form場合は、基盤となるフレームワークに依存するようにします。これは、ドメインロジックの一部をアプリケーションの外部リソースに結合しているため、(ドメイン駆動設計の観点からは)適切ではありません。

于 2012-01-02T16:24:02.787 に答える