2012-03-07 7 views
0

ユーザーにログインするとします。ユーザーが検証データを送信すると、コントローラーがPOSTリクエストを取得し、ユーザー登録メソッドを呼び出して登録します。モデルのセッション値の保存と初期化

私はユーザーデータを使ってユーザーセッションを開始したいと思います。しかし、私はどのようにセッションを開始すべきですか?コントローラーやモデルで起動する必要がありますか?セッションを開始しなければならないと言う私のビジネスロジックなので、モデルでなければならないと思います。しかしどうですか?セッションオブジェクトをリポジトリに渡す必要がありますか?

私はDoctrineをモデルレイヤに使用し、残りは自分のフレームワークを使用します。私は依存関係注入を使用しますが、エンティティ/リポジトリ層からセッションへのアクセスを取得する方法はわかりません。

今私が得た唯一の解決策は、セッションをパラメータとして渡すリポジトリメソッドを呼び出すことですが、それは正しいとは感じません。

答えて

1

セッションの処理はコントローラで行うべきだと思っていますが、個人的な意見です。懸念が明確に分離しようとしている場合は、コントローラに挑戦すべきです。 Doctrine(抽象化と独立性に非常に重点を置いています)をセッションに依存させることは、多くの意味を持ちません。

モデルからメソッドを呼び出してユーザーを登録するコントローラを作成します。モデルメソッドは、ユーザ固有のデータを返します。コントローラに渡すセッションに渡します。おそらく、モデルに関係ない多くの場所でセッションを使用します。 1つにカプセル化することができれば、なぜ2つのレベルに伸びるのですか?

+0

セッションは、独自のクラスにカプセル化されます。コントローラ層を介してカプセル化する必要はありません。 IMO、特定のビジネスロジックのためにセッション値を書きたい場合、モデルはこのセッションクラスを呼び出すように記述する必要があります。 コントローラーはビューレイヤーにデータを送信するだけです。 – fiunchinho

+0

Hmmm ok。おそらく個人的な選択ですが、私はまだモデルに入れません。同じモデルを使用してデスクトップアプリケーションを作成したいとします。セッションは必要ありません。なぜモデルはそれに依存するでしょうか? – ZolaKt

+0

その場合、その特定のデバイスには必要ないので、ダミーセッションオブジェクト(通常のセッションハンドラとインターフェイスを共有する)をモデルに挿入します。どう思いますか ? – fiunchinho

関連する問題