2010-12-13 11 views
3

私はMagento & PHP CodeIgniter MVCを約4ヶ月使っています。私はCodeIgniter & Magentoの検証ロジックをどこに設定すればよいのか、という問題を抱えています。実際の意味でMVCアーキテクチャ&に従ってください。PHPとMagento検証に関する一般的なMVCの質問

まず第一に、私はMagentoのとオフを開始します: -

は私が&トーナメント両方のプレーヤーについてですMagentoの中に「Assignment」モジュールを、持っていると言います。この検証も必要である

  1. プレイヤーID
  2. トーナメントID

- :私は、私は次のことを検証&をチェックする必要があり、この「Assignment」モジュールのコントローラで、3つのアクションメソッドを持っています"Assignment"モジュールのブロッククラスと、3つのアクションメソッドに含まれています。
コントローラクラスでもブロッククラス&の両方のバリデーションを使用する必要があるため、このモジュールのコントローラクラスまたはModelクラスで、上記2点の検証を行う必要がありますか?

実際のMVCアーキテクチャでは、この場合どのようなことが示唆されていますか?

可能であれば、実装のロジックを強調するコードスニペットを入力してください。 CodeIgniterのか、他のPHPのMVCフレームワークについて

: -

セッションを使用して何の検証はCodeIgniterの中のブロックの概念がないので、かなりのページ固有&なので、セッション変数の通常セッションの検証&設定以来ですコントローラクラスでのみ実行されます。

これは私がどのような状況下でセッション&セッションのバリデーションをModelクラスに入れなければならないのかを正確に表した&です。

さらに、実際のMVCアーキテクチャはこの場合どのようなことを示唆していますか?

また可能であれば、実装のロジックを強調するコードスニペットを入力してください。

これは本当に混乱状態です。&私はここにこだわっています。ここで私を助けてください。どんな解決策や助けも大歓迎です。事前に多くの感謝。

EDIT: -

可能であれば、&は、モデル法で定義された実際の例外メッセージと、例外を投げると一緒に、適切な検証を書く作成する方法についていくつかのMagentoのコードを提供してください?

答えて

5

モデルレイヤーは独自の整合性を維持できなければならないため、他の決定にかかわらず、モデルレイヤーに検証を含める必要があります。ユーザを助けるために(そしてより有益な確認メッセージを提供するために)、コントローラレベルでいくつかの検証を行うこともできます。

このアプローチの利点は、モデルレイヤーを維持すると、不正なコントローラが不正なデータを設定する可能性がないことです。これは、セッションの一部のデータを管理し、そのセッションの途中でそのデータを検証するために、オブジェクトを使用することである、2番目の質問になります。


ブロック/ビューの検証に対処するために、このような検証の使用を検討してください。それには独自の欠陥がありますが、一般的に書かなければならない検証コードの量は最小限に抑えられます:

// make sure that the below returns the relevant assignment model class 
$assignment = $this->getAssignment(); // or get it via a session, or helper, or what have you. 
$player = getChosenPlayer(); 


try { 
    $assignment->setPlayer($player); //throws exception when invalid 
    ... do more ... 
    $assignmnent->save(); 
} catch(SomeException $e) { 
    addValidationError($e->getMessage()); 
    renderPageAgain(); 
} 
関連する問題