2

その質問に関連しています。
エンティティなどを処理するためにいくつかのサービスを作成する必要があることを理解しました。これは、ロジックをコントローラーから「移動」し、「マネージャー」(つまり、サービス) に配置する必要があるためです。

これで、いくつかのロジックを含むサービスができました。そのサービスでは、ユーザーに応じて、「関連オブジェクト」のリストを返します。これらのオブジェクトはスポーツチームであると言います。リストの最初の要素 (何らかの方法でリポジトリから生成されたもの) が「デフォルト」のチームであり、ページがあり、セッション全体で
変更できるとしましょう。 ログアウトまたはセッションが古くなった後、「デフォルト」の状況に戻りたいです。

したがって、私の考えは次のとおりです。「このエンティティのマネージャーを作成したので、このプロパティを (db から) ロードし、変更を (一時的にセッター メソッドで) 保存するこのクラスにプライベート属性を作成します。」
これは私のデータベースには影響せず、すべてのセッションで情報を保持できます。

しかし、ある考えが頭に浮かびました。セッション オブジェクトはどうでしょうか。(私が間違って理解していなければサービスです)
私の解決策は良い解決策ですか、それとも私の情報をセッションオブジェクトに保存する方が良いですか?
私の観点からは、を使用して小枝から直接セッションの変数を読み取ることができることを除いて、同じapp.sessionです。私が間違っている?

さらに、私が間違っていなければ、コントローラーからオブジェクトのプロパティを渡すたびに小枝からオブジェクトのプロパティにアクセスするにはどうすればよいですか? (アプリケーション ページのどこにでも表示したいグローバル変数を持つようなものです)。

編集:

詳細については、このチャット トランスクリプトを参照してください。

4

1 に答える 1

1

セッション中(たとえば、ログアウトするまでログインするか、ユーザーがブラウザウィンドウを閉じない限り)変数を保存する場合は、セッションオブジェクトに変数を保存する必要があります。リクエストの期間中変数を保存する場合は、マネージャーサービスに保存できます。

ただし、マネージャーサービスを使用して、セッション変数をロードし、コントローラーで使用できるようにすることができます。

コントローラーをデータベース/Doctrineから切り離すのが良い考えであるのと同じように、コントローラーをセッションから切り離すことも良い考えです。

更新:RESTを見るときにコメントで述べたように、サービスでセッションを実行することはお勧めできません。ただし、変数をセッションに保存し、コントローラーを使用してサービスに値を設定する必要があります。

于 2012-09-19T11:42:50.787 に答える