늦은 답변이지만 tempstore가 활성 세션에 액세스 할 수있는 한 익명 사용자에게 개인 tempstore를 사용할 수 있습니다. 이렇게하려면 다음과 같이 임시 저장소, 세션 및 현재 사용자를위한 서비스를 클래스에 주입해야합니다.
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();
}
이 방법은 사용자의 로그인 여부에 관계없이 단일 시스템을 임시 스토리지에 사용할 수 있기 때문에 선호되는 방법 일 수 있습니다.
(내 코드 예제는 다단계 양식 작성에 대한이 훌륭한 자습서 에서 다소 간결하게 해제되었습니다 .)