Cách ghi đè hoặc Sử dụng plugin cho isWebsiteScope()
chức năng từ
tệp Magento \ Customer \ Model \ Config \ Share.php ,
Tôi đã sử dụng plugin cho chức năng bên dưới nhưng tôi muốn có phiên khách hàng hiện tại ở chức năng bên dưới, Chủ yếu kiểm tra mã xác nhận có đăng nhập hay không .
Chỉ cần sử dụng plugin và thiết lập 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>
Trong tệp Share.php,
<?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;
}
}
}
Làm thế nào để có được phiên khách hàng hiện tại trong chức năng trên,
Nếu tôi sử dụng phiên khách hàng hiện tại bằng trình duyệt mô hình phiên khách hàng sẽ xuất hiện lỗi phụ thuộc Thông tư.
Magento\Customer\Model\Config\Share
là phụ thuộc Magento\Customer\Model\Session
, do đó xảy ra lỗi phụ thuộc vòng tròn - Tôi thấy những gì bạn đang cố gắng thực hiện (nghĩa là thay đổi phạm vi trang web nếu khách hàng đăng nhập) nhưng không thể tìm ra một cách không hacky hoặc.
\Magento\Framework\ObjectManagerInterface