Block
<?php
namespace Vendor\Module\Block;
class CustomerLink extends \Magento\Framework\View\Element\Template
{
protected $_customersession;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Customer\Model\Session $session
) {
parent::__construct($context);
$this->_customersession=$session;
}
public function sessionCheck()
{
return $this->_customersession->isLoggedIn();
}
}
Vorlage
<?php
if($block->sessionCheck())
{
echo 'logged in';
}
else
{
echo 'logged out';
}
?>
Es funktioniert nur auf der Kundenseite und der Checkout- / Warenkorbseite . Die verbleibende Seite gibt false zurück, selbst wenn der Kunde angemeldet ist.
Deshalb habe ich mich entschlossen, \Magento\Framework\App\Http\Context $httpContext
diesen booleschen Rückgabewert auf der gesamten Website zu verwenden, aber wie man Kundendaten verwendet httpContext
.
Warum funktioniert \ Magento \ Customer \ Model \ Session nur auf der Kundenseite?
Hinweis: Alle Caches befinden sich im Aktivierungsmodus.