CakePHP 3:无法向存储在会话中的对象添加属性。

时间:2014-12-16 18:06:11

标签: php oop session cakephp object

我通过执行以下操作将对象存储到会话:

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

在另一个控制器中,我尝试将另一个属性添加到同一个对象:

$this->request->session()->write('order.client_id', $client->id);

但由于某种原因,这会覆盖整个对象,而我留下的对象只有一个属性,即新创建的client_id。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

  

点用于表示嵌套数组。无论使用何种名称/密钥,此表示法都用于所有会话组件方法。

     

- Interacting with Session data

您确定$order变量是数组,而不是对象吗?

如果$order是一个对象,则必须获取该对象,进行更改并将其重新放入会话中。

$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);

答案 1 :(得分:0)

能够通过以下方式解决这个问题:

$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);