12

谁能给我一个关于如何创建会话并向其写入数据的示例。我已经看到了有关如何使用 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 account created','/forms/homepage/'. $userId )中使用会话变量'User.UserId'而不是 $userId

我可以在我的所有视图文件中使用这个变量吗,因为在所有页面请求中我也传递了 userId?

编辑 2

我有 2 个控制器,用户和表单。我将用户 ID 写入用户_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;

该值未回显。

我不能在同一个控制器中使用会话变量吗?

4

8 回答 8

12

面包店是你最好的朋友:

http://book.cakephp.org/view/398/Methods

您所有的会话读/写都属于控制器:

$this->Session->write('Person.eyeColor', 'Green');

echo $this->Session->read('Person.eyeColor'); // Green
于 2009-07-07T09:53:00.660 回答
6

在 cake php 中,您可以像这样创建会话

$this->request->session()->write('user_id', 10);

你可以像这样读取会话值

echo $this->request->session()->read('user_id');

超级简单!

于 2018-07-21T15:24:43.697 回答
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 在视图中使用

于 2009-07-07T10:13:11.507 回答
2

cakephp 4 控制器、视图和单元格中的会话使用示例

$session = $this->request->getSession();
$session->write('abc', 'apple');
echo $session->read('abc');
于 2020-06-25T03:54:04.333 回答
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');

缓慢而仔细地阅读适当的食谱页面通常会很有帮助……

于 2009-07-07T10:42:32.087 回答
0

我发现了没有回显 uid 的原因(编辑问题的 3 部分)。这是由于一个愚蠢的错误,在控制器中的结束标记 ?> 之后有一个空格。现在它工作正常。

于 2009-07-20T06:38:18.930 回答
0

当我有奇怪的会话行为时,这对我有帮助。

模型:

 function clearAllDBCache() {
    $db =& ConnectionManager::getDataSource($this->useDbConfig);
    $db->_queryCache = array();
   }

`

于 2010-02-02T19:36:05.237 回答
0

访问您的 Helper SessionHelperlib/Cake/View/Helper/SessionHelper.php并添加方法:

public function write($name = null) {
    return CakeSession::write($name);
}
于 2014-04-18T13:52:09.953 回答