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\Sharees 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