Session 为什么会话数据仅在CakePHP中的控制器中可用?
所以,我喜欢CakePHP并经常使用它。当2.0问世时,我很高兴看到AuthComponent作为一个静态类在整个应用程序中都可用,这使很多事情变得更容易——也就是说,您不再需要将用户数据作为参数传递给模型方法 最近在一个项目中,我意识到需要从模型访问SessionComponent的方法。具体来说,当用户登录时,会执行一些检查,以查看该用户是否拥有对该站点的有效订阅。这些都是在模型中完成的。如果用户不再拥有有效的订阅,可能有以下几个原因。从模型中返回Session 为什么会话数据仅在CakePHP中的控制器中可用?,session,cakephp,cakephp-2.0,Session,Cakephp,Cakephp 2.0,所以,我喜欢CakePHP并经常使用它。当2.0问世时,我很高兴看到AuthComponent作为一个静态类在整个应用程序中都可用,这使很多事情变得更容易——也就是说,您不再需要将用户数据作为参数传递给模型方法 最近在一个项目中,我意识到需要从模型访问SessionComponent的方法。具体来说,当用户登录时,会执行一些检查,以查看该用户是否拥有对该站点的有效订阅。这些都是在模型中完成的。如果用户不再拥有有效的订阅,可能有以下几个原因。从模型中返回false似乎最容易,同时设置一条flash
false
似乎最容易,同时设置一条flash消息,给出过期订阅的原因。而不是像这样返回数组:
array('status' => 0, 'message' => 'You\'re not welcome here anymore')
需要在控制器中进行解释
还有一些时候我想在模型中处理会话,但我想到的就是这个例子
那么,我想知道,我想在模型中访问SessionComponent是对的吗?当我有这种需要时,我是否应该直接使用$\u会话?还是我做错了-有更好的编码方法吗?您可以随时使用
CakeSession::read()
应用程序中的任何位置。模型中也是如此。
请参阅以前的帖子,如
但请注意,如果可能的话,你应该尽量避免。
模型被认为是尽可能无状态的-将它们与会话混合会使其变得越来越模糊。您可以随时使用
CakeSession::read()
应用程序中的任何位置。模型中也是如此。
请参阅以前的帖子,如
但请注意,如果可能的话,你应该尽量避免。
模型被认为是尽可能无状态的-将它们与会话混合会使其变得越来越模糊。根据CakePHP:
在CakePHP中通常避免使用$\u会话,而是
最好使用会话类
有几种不同的配置,您可以在其中存储会话数据f.ex。在数据库中。因此,通过使用CakeSession
对会话配置的更改不会影响您访问会话数据的每个位置
我建议不要使用模型中的SessionComponent。更好地将参数传递给具有必要数据的模型。看看。根据CakePHP:
在CakePHP中通常避免使用$\u会话,而是
最好使用会话类
有几种不同的配置,您可以在其中存储会话数据f.ex。在数据库中。因此,通过使用CakeSession
对会话配置的更改不会影响您访问会话数据的每个位置
我建议不要使用模型中的SessionComponent。更好地将参数传递给具有必要数据的模型。看看。将会话控制传递给MVC模型。您应该使用模型来做出决策,并使用控制器将这些决策反映到应用程序中。在正确的MVC环境中,模型甚至不知道您正在使用会话,更不用说操纵会话了
此外,使用$\u会话变量违反了框架封装。如果您发现自己需要这样做,是的,您在某个地方出错了。将会话控制传递给模型违反了MVC。您应该使用模型来做出决策,并使用控制器将这些决策反映到应用程序中。在正确的MVC环境中,模型甚至不知道您正在使用会话,更不用说操纵会话了
此外,使用$\u会话变量违反了框架封装。如果您发现自己需要这样做,是的,您在某个地方出错了。您可以使用
Authcomponent
和session
在模型中的会话中写入和读取数据
App::uses('AuthComponent', 'Controller/Component');
App::import('Component', 'Session');
您可以使用以下函数写入和读取数据
CakeSession::write('Auth.User.id', '1');
debug(CakeSession::read());
您可以使用
Authcomponent
和session
App::uses('AuthComponent', 'Controller/Component');
App::import('Component', 'Session');
您可以使用以下函数写入和读取数据
CakeSession::write('Auth.User.id', '1');
debug(CakeSession::read());