function PrivateTempStore::set
Same name in other branches
- 8.9.x core/lib/Drupal/Core/TempStore/PrivateTempStore.php \Drupal\Core\TempStore\PrivateTempStore::set()
- 10 core/lib/Drupal/Core/TempStore/PrivateTempStore.php \Drupal\Core\TempStore\PrivateTempStore::set()
- 11.x core/lib/Drupal/Core/TempStore/PrivateTempStore.php \Drupal\Core\TempStore\PrivateTempStore::set()
Stores a particular key/value pair in this PrivateTempStore.
Parameters
string $key: The key of the data to store.
mixed $value: The data to store.
Throws
\Drupal\Core\TempStore\TempStoreException Thrown when a lock for the backend storage could not be acquired.
File
-
core/
lib/ Drupal/ Core/ TempStore/ PrivateTempStore.php, line 122
Class
- PrivateTempStore
- Stores and retrieves temporary data for a given owner.
Namespace
Drupal\Core\TempStoreCode
public function set($key, $value) {
if ($this->currentUser
->isAnonymous()) {
// Ensure that an anonymous user has a session created for them, as
// otherwise subsequent page loads will not be able to retrieve their
// tempstore data. Note this has to be done before the key is created as
// the owner is used in key creation.
$this->startSession();
$session = $this->requestStack
->getCurrentRequest()
->getSession();
if (!$session->has('core.tempstore.private.owner')) {
$session->set('core.tempstore.private.owner', Crypt::randomBytesBase64());
}
}
$key = $this->createkey($key);
if (!$this->lockBackend
->acquire($key)) {
$this->lockBackend
->wait($key);
if (!$this->lockBackend
->acquire($key)) {
throw new TempStoreException("Couldn't acquire lock to update item '{$key}' in '{$this->storage->getCollectionName()}' temporary storage.");
}
}
$value = (object) [
'owner' => $this->getOwner(),
'data' => $value,
'updated' => (int) $this->requestStack
->getMainRequest()->server
->get('REQUEST_TIME'),
];
$this->storage
->setWithExpire($key, $value, $this->expire);
$this->lockBackend
->release($key);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.