2014-12-16 2 views
1

хранить объект для сеанса, выполнив:CakePHP 3: Невозможно добавить свойство к объекту, хранящемуся в сеансе.

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

В другом контроллере я пытаюсь добавить другое свойство тот же объект:

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

Но по какой-то причине это переписывает весь объект и Я остался с объектом, у которого есть только одно свойство, только что созданное client_id.

Каков правильный способ сделать это?

+0

Вы уверены, что вы [делаете это правильный путь] (http://book.cakephp.org/2.0/en/core -libraries/компоненты/sessions.html)? Я особенно интересуюсь этими скобками после сеанса. –

+0

Я думаю, что правильно использую его. Имейте в виду, что я использую CakePHP3. –

+0

О, мой плохой, вы правы, что кажется правильным. Вы что-то изменили в коде cakephp? –

ответ

0

Точки используются для указания вложенных массивов. Эта нотация используется для всех методов компонента Session везде, где используется имя/ключ.

- Interacting with Session data

Вы уверены, что ваша $order переменная является массивом, а не объект?

Если $order является объектом, вы должны получить объект, изменить его и поместить его снова в сеанс.

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

$ order - это объект. Есть ли способ добавить к нему свойство? –

+0

Если этот ответ является правильным ответом для вас, вы можете «проверить его», чтобы люди знали, что это путь. – SandRock

0

Умел работать вокруг этого делать:

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