0

symfony2 では、すべてのユーザーが作成したコントローラーは、以下に示すようにコントローラー クラスを拡張します。

class MyController extends Controller {

したがって、セッション処理に関連する機能は $this オブジェクトで利用できますが、Vendor と Core のコントローラは Controller クラスを拡張しないため、セッション関連の機能へのアクセスは提供されません。Controller クラスを拡張せずにこれらの関数を使用する方法はありますか。

現在$_SESSION[]、セッション変数の設定と取得に を使用しています。

上記以外に方法はありますか?

4

1 に答える 1

2

Symfony2 はセッションのサービスを提供します。これは取得しようとしているものです。symfony2 のすべてのサービスは、サービス コンテナーを使用して取得されます。

$this->get('session');

独自のコントローラーでサービスコンテナーを適切に利用するには、次のいずれかを実行できます...

  1. コントローラーをサービスとして構成します (参照:ここ)
  2. Symfony2 スタックによって提供される基本コントローラー クラスを拡張します (get()メソッドを子コントローラーで使用できるようにします)。

最初のオプションは正しい方法です。どのサービスをそれぞれのコントローラーに注入するかを完全に制御できます (サービス コンテナーのドキュメントを参照) 。

于 2013-01-14T13:32:41.020 に答える