การตอบกลับช้า แต่ก็คุ้มค่าที่จะกล่าวถึงว่าคุณสามารถใช้ tempstore ส่วนตัวสำหรับผู้ใช้ที่ไม่ระบุชื่อตราบใดที่ tempstore สามารถเข้าถึงเซสชันที่ใช้งานอยู่ ในการทำเช่นนั้นคุณต้องฉีดคลาสของคุณด้วยบริการสำหรับที่เก็บ temp เซสชันและผู้ใช้ปัจจุบันเช่น:
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')
    );
}
จากนั้นคุณเพียงแค่ต้องให้แน่ใจว่าคุณเริ่มเซสชันผู้จัดการหากผู้ใช้ไม่ระบุชื่อก่อนที่คุณจะต้องใส่อะไรในเก็บ temp:
if ($this->currentUser->isAnonymous() && !isset($_SESSION['session_started'])) {
    $_SESSION['session_started'] = true;
    $this->sessionManager->start();
}
คุณอาจพบว่าวิธีนี้ดีกว่าเพราะมันหมายความว่าคุณสามารถใช้ระบบเดียวสำหรับการจัดเก็บชั่วคราวโดยไม่คำนึงว่าผู้ใช้เข้าสู่ระบบ
(ตัวอย่างรหัสของฉันถูกยกขึ้นทุกคำหรือมากกว่าจากบทช่วยสอนที่ยอดเยี่ยมนี้ในการสร้างแบบฟอร์มหลายขั้นตอน )