题
任何人都可以给我关于如何创建会话和向其中写入数据的例子。我已经看到了如何将数据写入到使用写命令会话语法。但如何创建一个会话和检索它的值。
在我的应用程序,我需要在所有的页面请求中使用两个数据,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);
}
如何使用会话变量的 'User.UserId'而不是$用户id在$这个 - >闪存( '用户帐户创建', '/表格/主页/'。 $用户id 强>);
和我可以用我的所有视图文件这个变量,因为在所有的页面请求我也通过用户id?
修改2 强>
我有2个控制器,用户和形式。我写的用户ID在用户会话变量的 _controller。我有一个名为homepage.ctp一个视图文件,其作用是在forms_controller。的现在,我该如何使用在主页的users_controller定义会话变量?很抱歉,如果我问愚蠢的问题。我通过cakebook去了,但我的疑惑并没有被清除。我也想试编码错误的方法,所以请帮助我。
修改3 强>
我有一个会话变量为“uid”,这是在控制器的主页动作的用户标识。
$this->Session->write('uid',$this->data['Form']['created_by']);
我需要在同一个控制器的设计操作方法相同的变量。 当我给
$uid=$this->Session->read('uid');
echo "uid: ".$uid;
值不回应。
我不能使用会话变量在同一个控制器?
解决方案 5
我发现之所以UID没有被呼应(编辑3问题的一部分)。 这是由于一个愚蠢的错误,不得不结束标记之后白色空间?>在控制器中。现在,它工作正常。
其他提示
在面包店是你最好的朋友:
http://book.cakephp.org/view/398/Methods
所有会话的读/写操作的控制器属于:
$this->Session->write('Person.eyeColor', 'Green');
echo $this->Session->read('Person.eyeColor'); // Green
在蛋糕PHP中可以如创建会话这样
$this->request->session()->write('user_id', 10);
和可以像这样的读取会话值强>
echo $this->request->session()->read('user_id');
超级简单!
您不必编写创建会话,他们已经内置在任何代码,然后你只需要使用读取和如上所述写会话。此外在这里看到更多的细节:
http://book.cakephp.org/2.0 /en/core-libraries/components/sessions.html 用于控制器
http://book.cakephp.org/2.0 /en/core-libraries/helpers/session.html 用于浏览
在这种情况下,这将是:
$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId'));
和第二个问题是由Jason Miy( http://api.cakephp.org anwered /班/会议辅助)。你可以简单地在视图中使用:
$userId = $session->read('User.UserId');
读取相应的菜谱页慢慢地,仔细通常有很大帮助...
当我有奇怪的会话行为,这帮助我。
MODEL:
function clearAllDBCache() {
$db =& ConnectionManager::getDataSource($this->useDbConfig);
$db->_queryCache = array();
}
`
接取您的帮助器SessionHelper在lib/Cake/View/Helper/SessionHelper.php
并添加方法:
public function write($name = null) {
return CakeSession::write($name);
}