0

我正在尝试从会话中获取客户会话数据(私人数据)并在其中一个块的前端显示。由于个性化,启用缓存时我没有获取数据。我寻找解决方案,发现使用 cacheable="false" 可以实现从启用缓存的会话中获取客户私有数据。但是我意识到整个页面都因此而没有被缓存。谁能帮助我在不使用 cacheable="false" 的情况下获取特定块中的数据?

4

2 回答 2

0
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$customerSession = $objectManager->create('Magento\Customer\Model\SessionFactory')->create();

通过这种方式,您可以使用客户会话而不使用cachable="false"

于 2018-02-12T11:30:17.460 回答
0
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $customerSession = $objectManager->get('Magento\Customer\Model\Session');
    $customer = $objectManager->get('Magento\Customer\Model\Customer')->load($customerSession->getId());
    $cust_name =  '';
    $cust_email ='';
    $cust_telephone ='';
    if($customerSession->isLoggedIn()) {
        $cust_name =  $customerSession->getCustomer()->getName();
        $cust_email = $customerSession->getCustomer()->getEmail();

        if(!empty($customer->getPrimaryBillingAddress())){
            $cust_telephone = $customer->getPrimaryBillingAddress()->getTelephone();
        }
    }
于 2018-12-06T09:17:19.127 回答