So überschreiben oder verwenden Sie das Plugin für isWebsiteScope()
Funktionen aus der
Datei Magento \ Customer \ Model \ Config \ Share.php .
Ich habe das Plugin für die unten stehende Funktion verwendet, möchte aber die aktuelle Kundensitzung in der unten stehenden Funktion abrufen. Überprüfen Sie hauptsächlich, ob custoemr angemeldet ist oder nicht .
Verwenden Sie einfach das Plugin und setzen Sie di.xml,
<!-- Override Share.php to set value of website scope -->
<type name="Magento\Customer\Model\Config\Share">
<plugin name="Company_Modulename::Share" type="\Company\Modulename\Plugin\Config\Share\Proxy" sortOrder="1"/>
</type>
In der Share.php-Datei
<?php
namespace Company\Modulename\Plugin\Config;
class Share
{
public function __construct(
\Magento\Customer\Model\Session $customerSession
) {
$this->session = $customerSession;
}
/**
* Check whether current customers sharing scope is website
*
* @return bool
*/
public function afterIsWebsiteScope(\Magento\Customer\Model\Config\Share $subject)
{
if(!$this->session->isLoggedIn()){
return 1;
} else {
return 0;
}
}
}
So erhalten Sie die aktuelle Kundensitzung in der obigen Funktion:
Wenn ich die aktuelle Kundensitzung mit dem Kundensitzungsmodell-Browser verwendet habe, wird ein kreisförmiger Abhängigkeitsfehler ausgegeben.
Magento\Customer\Model\Config\Share
es sich um eine Abhängigkeit von handelt Magento\Customer\Model\Session
, daher der zirkuläre Abhängigkeitsfehler. Ich sehe, was Sie versuchen (dh den Umfang der Website ändern, wenn der Kunde angemeldet ist), konnte dies jedoch nicht herausfinden ein nicht-hackiger Weg auch.
\Magento\Framework\ObjectManagerInterface