গুরুত্বপূর্ণ অনুস্মারক: কখনই সরাসরি অবজেক্ট ম্যানেজারকে কল করা উচিত নয়
সুতরাং এখানে কিভাবে পরিষ্কার ভাবে এটা করতে
টেমপ্লেট ব্যতীত যে কোনও শ্রেণিতে
আপনার কনস্ট্রাক্টরে প্রথমে আপনাকে নিম্নলিখিত ক্লাসটি ইনজেক্ট করতে হবে /Magento/Customer/Model/Session
:
protected $_session;
public function __construct(
...
\Magento\Customer\Model\Session $session,
...
) {
...
$this->_session = $session;
...
}
তারপরে আপনার ক্লাসে আপনি নিম্নলিখিতগুলিতে কল করতে পারেন:
if ($this->_session->isLoggedIn()) {
// Customer is logged in
} else {
// Customer is not logged in
}
একটি টেম্পলেট মধ্যে
এটি কোনও টেমপ্লেটে আরও কিছুটা কাজ প্রয়োজন কারণ আপনাকে ব্লকটির জন্য একটি অগ্রাধিকার সেটআপ করতে হবে যা পরিষ্কার উপায়ে করতে টেমপ্লেটটি সরবরাহ করে:
<preference for="Block\That\Renders\The\Template"
type="Vendor\Module\Block\Your\Custom\Block" />
তারপরে আপনার কাস্টম ব্লক কনট্রাস্ট্টারে আপনাকে কোনও শ্রেণির জন্য একই নির্ভরতা ইনজেকশন অনুসরণ করতে হবে (উপরে বর্ণিত)।
এখানে অতিরিক্ত পদক্ষেপটি এমন একটি সর্বজনীন পদ্ধতি তৈরি করা যা কোনও গ্রাহক লগ ইন হয়েছে কিনা তা যাচাই করতে আপনার টেমপ্লেটে ব্যবহার করা যেতে পারে
public function isCustomerLoggedIn()
{
return $this->_session->isLoggedIn();
}
তারপরে আপনার টেমপ্লেটে আপনি কল করতে পারেন:
if ($block->isCustomerLoggedIn()) {
// Customer is logged in
} else {
// Customer is not logged in
}
বিকল্প যদি গ্রাহক সেশন এখনও আরম্ভ করা হয় না
এটি করার আরও একটি উপায় রয়েছে যা Magento\Framework\App\Http\Context
পরিবর্তে ব্যবহার করে বোঝায়Magento/Customer/Model/Session
তারপরে আপনি গ্রাহক লগ ইন করেছেন কিনা তা যাচাই করার $this->_context->getValue(\Magento\Customer\Model\Context::CONTEXT_AUTH)
পরিবর্তে ফোন করতে পারেন $this->_session->isLoggedIn()
।
তবে এই পদ্ধতিটি আপনাকে বিভিন্ন ফলাফল দিতে পারে , আমি আপনাকে আরও তথ্যের জন্য এই দুর্দান্ত উত্তরটি পড়ার পরামর্শ দিচ্ছি: https://magento.stackexchange.com/a/92133/2380