उत्तर देने में देर हो गई, लेकिन यह ध्यान देने योग्य है कि आप अनाम उपयोगकर्ताओं के लिए निजी टेम्पोस्टोर का उपयोग कर सकते हैं, जब तक कि टेम्पोरोर के पास सक्रिय सत्र तक पहुंच हो। ऐसा करने के लिए, आपको अपनी कक्षा को अस्थायी स्टोर, सत्र और वर्तमान उपयोगकर्ता के लिए सेवाओं के साथ इंजेक्ट करने की आवश्यकता है, जैसे:
public function __construct(PrivateTempStoreFactory $temp_store_factory, SessionManagerInterface $session_manager, AccountInterface $current_user) {
$this->tempStoreFactory = $temp_store_factory;
$this->sessionManager = $session_manager;
$this->currentUser = $current_user;
$this->store = $this->tempStoreFactory->get('myclass.storename');
}
public static function create(ContainerInterface $container) {
return new static(
$container->get('user.private_tempstore'),
$container->get('session_manager'),
$container->get('current_user')
);
}
तब आपको केवल यह सुनिश्चित करने की आवश्यकता है कि उपयोगकर्ता द्वारा अनाम होने से पहले आपको सत्र प्रबंधक को शुरू करने की आवश्यकता है, इससे पहले कि आपको टेम्प स्टोर में कुछ भी डालने की आवश्यकता हो:
if ($this->currentUser->isAnonymous() && !isset($_SESSION['session_started'])) {
$_SESSION['session_started'] = true;
$this->sessionManager->start();
}
आपको यह दृष्टिकोण बेहतर लग सकता है क्योंकि इसका मतलब है कि आप अस्थायी संग्रहण के लिए एकल प्रणाली का उपयोग कर सकते हैं, भले ही कोई उपयोगकर्ता लॉग इन हो।
( बहु-चरण रूपों के निर्माण पर इस उत्कृष्ट ट्यूटोरियल से मेरे कोड उदाहरणों को अधिक-या-कम शब्दशः हटा दिया जाता है ।)