5

よくわからないけどどれがいいの?user login formコントローラーで検証または他のフォームを検証する方が良いと思いますか、それともモデルから検証までの「セキュリティクラス」などの1つのクラスを定義する方が良いと思いますか? または検証のためにいくつかのクラスを定義しますか? より良い選択または優れたテクニックを知っていますか?

<?php
class acontroller{
.
.
.
private function loginformAction()
{
    $this->actionform='loginform';
    $this->errorMsg=array();
    if(isset($post)){
        if(empty($post('aliasName'))){
                       ...
        }else{
           ...
                    }
        if(empty($post('password'))){
                      ...
        }
        if(empty($post('re_password'))){
                      ...   
        }
        if(!empty($post('password')) && isset($post('re_password')) ){
                      ...
        }
    }

    $this->render();
}
  .
  .
  .
 }   
4

2 に答える 2

8

検証はドメイン ロジックの一部です。コントローラーはこれとは何の関係もないはずです。着信リクエストの値をモデル層の適切な部分に渡すだけで済みます。

検証自体は、モデル レイヤー内のドメイン オブジェクトで実行する必要があります。また、一部のフォームでは、データの整合性について心配する必要があります (つまり、登録フォームの一意のユーザー名)。その場合、データ整合性チェックは実際にはデータ マッパーによって処理される必要があります。基本的には、SQL データベースにデータを渡すことで、チェックが実行され、違反がある場合は DB 抽象化で例外がトリガーされます。

アップデート

問題は認証/承認を扱っているため、この投稿が関連している可能性があります。

于 2012-11-30T18:46:07.830 に答える
1

IMO の「フォーム検証」別名「フィールド X は入力されていますか?長さのチェック、コンテンツのチェックなど」はコントローラーで処理できますが、「ユーザー認証/アクセス制御」は独自のモデル オブジェクトとして処理するのが最適です。

実際には、フォームの作成と検証の両方を行う「フォーム」モデル オブジェクトがあるため、入力を受け取るすべてのコントローラーでコードを再実装する必要はありません。

于 2012-11-30T18:46:21.153 に答える