Magento PHP检查用户是否已登录

Mar*_*ark 4 php magento

我有以下代码来查看用户是否已登录.它有效,因为它在客户区域内工作(用户已登录),但即使客户仍在登录,也无法在客户区域外工作.

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->get('Magento\Customer\Model\Session');
if($customerSession->isLoggedIn()) { ?>
   <li class="link wishlist" data-bind="scope: 'wishlist'">
    <a <?php /* @escapeNotVerified */ echo $block->getLinkAttributes() ?>><?php echo $block->escapeHtml($block->getLabel()) ?>
        <!-- ko if: wishlist().counter -->
        <span data-bind="text: wishlist().counter" class="counter qty"></span>
        <!-- /ko -->
    </a>
</li>
<li>Hello World</li>
?>
<?php
}
else {
?>
    <li>Not logged in</li>
<?php
}
?>



<script type="text/x-magento-init">
    {
        "*": {
            "Magento_Ui/js/core/app": {
                "components": {
                    "wishlist": {
                        "component": "Magento_Wishlist/js/view/wishlist"
                    }
                }
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

eld*_*dio 7

在magento 1.9中,如果要检查用户是否登录了任何控制器或phtml,则需要添加

<?php 
    if( ! Mage::getSingleton('customer/session')->isLoggedIn()){
        //not logged in
    }else{
        // logged in
    }
?>
Run Code Online (Sandbox Code Playgroud)

拓展超级对象的重要部分是这个

 Mage::getSingleton('customer/session')
Run Code Online (Sandbox Code Playgroud)

  • 看看他正在使用的代码。这是 Magento 2,而不是 Magento 1.9。不过,他应该已经说明了这一点。 (2认同)