2

だから、私はCakePHPが好きで、それをたくさん使っています。2.0がリリースされたとき、AuthComponentが静的クラスとしてアプリケーション全体で利用できるようになったことを嬉しく思います。これにより、多くのことがはるかに簡単になります。つまり、モデルメソッドへの引数としてユーザーデータを渡す必要がなくなります。

最近のプロジェクトで、モデルからSessionComponentのメソッドにアクセスする必要があることに気づきました。具体的には、ユーザーがログインすると、ユーザーがサイトへの有効なサブスクリプションを持っているかどうかを確認するためにいくつかのチェックが実行されます。これはすべてモデルで行われます。ユーザーが有効なサブスクリプションを持っていない場合、それが原因である可能性があるいくつかの理由があります。モデルから戻るfalseのが最も簡単なようですが、同時に、サブスクリプションの有効期限が切れた理由を示すフラッシュメッセージを設定します。次のような配列を返すのではなく、次のようにします。

array('status' => 0, 'message' => 'You\'re not welcome here anymore')

これはコントローラーで解釈する必要があります。

モデルでセッションを扱いたいと思ったこともありますが、これが頭に浮かんだ例です。

だから、私は知りたいのですが、私はモデルのSessionComponentにアクセスしたいのですか?この必要がある場合は、$ _ SESSIONを直接使用する必要がありますか?それとも私は間違ったことをしていますか?コーディングするためのより良い方法はありますか?

4

4 に答える 4

2

いつでも使用できます

CakeSession::read()

アプリケーションのどこにでも。モデルでもそう。Cakephp 2 のビヘイビア内でセッション変数を読み取るなどの以前の投稿を参照してください。

ただし、可能であれば回避するようにしてください。モデルは可能な限りステートレスであると想定されています - それらをセッションと混合すると、ますますぼやけます。

于 2012-09-27T09:07:27.413 に答える
1

CakePHPクックブックによると:

通常、CakePHP では $_SESSION の使用は避けられ、代わりに Session クラスの使用が推奨されます。

セッションデータを保存できるいくつかの異なる構成があります。データベースで。そのため、セッション構成の変更を使用してCakeSessionも、セッション データにアクセスするすべての場所に影響するわけではありません。

モデルから SessionComponent を使用しないことをお勧めします。必要なデータを使用してモデルにパラメーターを渡すことをお勧めします。Model-View-Controller の理解をご覧ください。

于 2012-09-27T16:15:47.073 に答える
1

セッション コントロールをモデルに渡すと、MVC に違反します。モデルを使用して決定を下し、コントローラーを使用してそれらの決定をアプリケーションに反映する必要があります。正しい MVC 環境では、モデルはセッションを使用していることさえ認識しません。

また、 $_SESSION 変数を使用すると、フレームワークのカプセル化に違反します。そうする必要があることに気付いた場合は、はい、どこかで間違っています。

于 2012-09-28T21:30:45.117 に答える
0

Authcomponentと を使用して、モデルのセッションでデータを読み書きできますsession

App::uses('AuthComponent', 'Controller/Component');
App::import('Component', 'Session');

また、次の関数を使用してデータを読み書きできます

CakeSession::write('Auth.User.id', '1');
debug(CakeSession::read());
于 2013-04-18T04:35:34.107 に答える