cakephp3:Can';t向会话中存储的对象添加属性。
我通过执行以下操作将对象存储到会话:cakephp3:Can';t向会话中存储的对象添加属性。,php,oop,session,cakephp,object,Php,Oop,Session,Cakephp,Object,我通过执行以下操作将对象存储到会话: $this->request->session()->write('order', $order); $order = $this->request->session()->read('order'); $order->client_id = $client->id; $this->request->session()->write('order', $order); 在另一个控制器中,我
$this->request->session()->write('order', $order);
$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);
在另一个控制器中,我尝试向同一对象添加另一个属性:
$this->request->session()->write('order.client_id', $client->id);
但由于某种原因,这会覆盖整个对象,剩下的对象只有一个属性,即新创建的client_id
正确的方法是什么
点用于表示嵌套数组。此符号用于所有使用名称/键的会话组件方法
--
您确定$order
变量是数组而不是对象吗
如果$order
是一个对象,则必须获取该对象,对其进行更改,然后将其再次放入会话中
$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);
能够通过以下方式解决此问题:
$this->request->session()->write('order', $order);
$order = $this->request->session()->read('order');
$order->client_id = $client->id;
$this->request->session()->write('order', $order);
你确定你是?课后我特别想知道这些括号。我想我用对了。请记住,我使用的是CakePHP3。哦,糟糕,你是对的,这似乎是正确的方法。您是否更改了cakephp代码中的任何内容?$order是一个对象。有没有一种方法可以添加属性?如果这个答案对你来说是正确的,你可以“检查它”,这样人们就会知道这是一种方法。