Jump to content

Recommended Posts

Posted

Hello, after creating an array and assigning it to a variable in session:

	$order = array ();
	$order['token'] 		= 'token';
	$order['product']		= 'product-name';
	$session->order 		= $order;

I try to insert another item:

$session->order['price'] = 'price';

But it doesn't work: 

Notice: Indirect modification of overloaded property ProcessWire\Session::$order has no effect in...

Isn't possible to modify such session variable? I could build another array from the session variable, add the new item, and then store it again in session, but doesn't looks good.

Thanks!

Posted (edited)

As you said, get the array from session in a temp var, insert your new item then assign back the array to the session var :

$order = array();
$order['token'] 		= 'token';
$order['product']		= 'product-name';
$session->order 		= $order;
bd($session->order);
$tmp = $session->order;
$tmp['price'] = 'price';
$session->order = $tmp;
bd($session->order);

 

Or use $session->setFor() :

$session->setFor('shop', 'token', 'token');
$session->setFor('shop', 'product', 'product-name');
bd($session->shop);
$session->setFor('shop', 'price', 'price');
bd($session->shop);
$session->setFor('shop', 'price', 'new-price');
bd($session->shop);

 

Edited by flydev
solution #2
  • Like 4
Posted

Thank you both.

I like solution #3 ?

$session->order = array_merge ($session->order, ['price' => 50]);

didn't know about "setFor", didn't found in docs or cheatsheet. 

And, what's?

bd($session->shop);

The array_merge works without it

Posted

? ?

Well, I've just recently installed it, but I need to sit and learn to use it. It seems it's going to be of great help.

 

 

 

  • Like 1
Posted
18 minutes ago, alejandro said:

And, what's?


bd($session->shop);

I want to add to tpr's comment that bd() is actually one of the 2 most used features of tracy for me. bd() makes a dump to the tracy bar (also for ajax requests, that's great!) and d() dumps directly and is great when using the console (see my screenshot above)

  • Like 2

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...