任何人都可以举例说明如何创建会话并向其写入数据。我已经看到了如何使用write命令将数据写入会话的语法。但是如何创建会话并检索其中的值。
在我的应用程序中,我有两个数据,需要在所有页面请求中使用form_id和user_id。那么如何将其保存为会话变量并在整个应用程序中使用它?
修改
function register()
{
$userId=$this->User->registerUser($this->data);
$this->Session->write('User.UserId',$userId);
//echo "session".$this->Session->read('User.UserId');
$this->User->data=$this->data;
if (!$this->User->validates())
{
$this->Flash('Please enter valid inputs','/forms' );
return;
}
$this->Flash('User account created','/forms/homepage/'.$userId);
}
如何在$ this-> Flash中使用会话变量'User.UserId'而不是$ userId('用户帐户已创建','/ forms / homepage /'。 $用户id );
我可以在所有视图文件中使用此变量,因为在所有页面请求中我还传递了userId吗?
编辑2
我有2个控制器,用户和表单。我将userid写入用户 _controller中的会话变量。我有一个名为homepage.ctp的视图文件,其操作在forms_controller中。现在我如何使用主页中users_controller中定义的会话变量?对不起,如果我问愚蠢的问题。我浏览了蛋糕书,但我的怀疑并没有被清除。我也在尝试编写错误的编码方法,所以请帮助我。
编辑3
我有一个会话变量'uid',它是控制器主页操作中的用户ID。
$this->Session->write('uid',$this->data['Form']['created_by']);
我需要在同一个控制器的设计动作方法中使用相同的变量。 当我给出
$uid=$this->Session->read('uid');
echo "uid: ".$uid;
该值未被回显。
我不能在同一个控制器中使用会话变量吗?
答案 0 :(得分:8)
面包店是你最好的朋友:
http://book.cakephp.org/view/398/Methods
所有会话读/写都属于控制器:
$this->Session->write('Person.eyeColor', 'Green');
echo $this->Session->read('Person.eyeColor'); // Green
答案 1 :(得分:2)
您不必编写任何代码来创建会话,它们已经内置。然后您只需使用上面提到的读写会话。另请参阅此处了解更多详情:
http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html 用于控制器
http://book.cakephp.org/2.0/en/core-libraries/helpers/session.html 在视图中使用
答案 2 :(得分:2)
在Cake php中,您可以创建这样的会话
$this->request->session()->write('user_id', 10);
您可以像这样读取会话值
echo $this->request->session()->read('user_id');
超级简单!
答案 3 :(得分:2)
cakephp 4控制器,视图和单元中会话使用的示例
$session = $this->request->getSession();
$session->write('abc', 'apple');
echo $session->read('abc');
答案 4 :(得分:0)
在这种情况下,它将是:
$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId'));
你的第二个问题由Jason Miy解答(http://api.cakephp.org/class/session-helper)。您可以在视图中使用它:
$userId = $session->read('User.UserId');
慢慢地仔细阅读适当的食谱页面通常会有很多帮助...
答案 5 :(得分:0)
我发现了uid没有被回应的原因(编辑问题的3部分)。 这是由于一个愚蠢的错误,在结束标记之后有一个空格?>在控制器中。现在工作正常。
答案 6 :(得分:0)
MODEL:
function clearAllDBCache() {
$db =& ConnectionManager::getDataSource($this->useDbConfig);
$db->_queryCache = array();
}
`
答案 7 :(得分:0)
在lib/Cake/View/Helper/SessionHelper.php
中访问你的Helper SessionHelper并添加方法:
public function write($name = null) {
return CakeSession::write($name);
}