3
このコードを見ました。無関係なコードをいくつか削除して、(パスワードが一致するかどうかを確認する同じバリデーターのように)シンプルにしました。このフィルターはなぜですか?それはコントローラ内にあるはずですか?
$password = new Zend_Form_Element_Password('password');
$password->addFilter(new My_Filters_Sha());
$password2 = new Zend_Form_Element_Password('password2');
$password2->addFilter(new My_Filters_Sha());
私の質問はフィルタに関するものです。私の推測では、誰でもパスワードをデータベースにハッシュとして保存しているので、パスワードをフィルタでハッシュしているのです。しかし、フィルターがハッシュを処理する点は何ですか?彼がアカウントを作成しているときにコントローラーでこれを一度行うべきではありませんか?入力が受け取られると、それをハッシュに処理し、それを保存します。これがフィルタとして行われている点はありますか?
私はこのフォームをModelクラスと考えるのは初めてです。ですから、登録時にユーザー名が利用可能かどうかを確認してみましょう。私はこの小切手をフォームに入れなければならないと言っていますか?コントローラーではありませんか? – samquo
私が今行っているのは、必要なフィールドがすべてあることを確認することです。それから私は、ハッシングとユーザーの利用可能性とコントローラ内のすべてのものを扱います。 – samquo
@samquo Zendフォームは...定義が難しいです。これについてのZFのMatthew Weier O'Phinneyの興味深いブログ記事がhttp://weierophinney.net/matthew/archives/200-Using-Zend_Form-in-Your-Models.htmlにあります。ユーザー名が利用可能かどうかを確認することは、間違いなくモデルに属するものです。コントローラーには何も配置されていません。モデルでは、それはあなた次第ですが、コントローラには入れません。あなたのコントローラーは薄く、あなたのモデルは太っているはずです。 http://stackoverflow.com/questions/3109715/understanding-mvc-whats-the-concept-of-fat-on-models-skinny-on-controllersを参照してください。 – Gordon