ম্যাজেন্টো 1 তে সেশনের সমতুল্য কত?
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
ম্যাজেন্টো 2 তে একই?
ম্যাজেন্টো 1 তে সেশনের সমতুল্য কত?
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
ম্যাজেন্টো 2 তে একই?
উত্তর:
আমি ম্যাজেন্টো 2 তে এর সমতুল্য উপায়টি পেয়েছি:
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
মূল সেশনে মান সেট করুন / পান / আনসেট করুন:
protected $_coreSession;
public function __construct(
-----
\Magento\Framework\Session\SessionManagerInterface $coreSession
){
$this->_coreSession = $coreSession;
----
}
public function setValue(){
$this->_coreSession->start();
$this->_coreSession->setMessage('The Core session');
}
public function getValue(){
$this->_coreSession->start();
return $this->_coreSession->getMessage();
}
public function unSetValue(){
$this->_coreSession->start();
return $this->_coreSession->unsMessage();
}
আমাদের সেশন মান নীচের সেশনগুলির সাথে সম্পর্কিত না হলে আমরা কাস্টম মান সেট করতে পারি:
ম্যাজেন্টো 2 তে আর কিছু নেই core/session
।
এগুলি যদিও রয়েছে (অন্যরাও হতে পারে):
\Magento\Backend\Model\Session
\Magento\Catalog\Model\Session
\Magento\Checkout\Model\Session
\Magento\Customer\Model\Session
\Magento\Newsletter\Model\Session
আপনার ব্লক বা নিয়ামক বা যা কিছু আপনার প্রয়োজন সেশনের জন্য আপনাকে নির্ভরতা তৈরি করতে হবে।
উদাহরণস্বরূপ নেওয়া যাক \Magento\Catalog\Model\Session
।
protected $catalogSession;
public function __construct(
....
\Magento\Catalog\Model\Session $catalogSession,
....
){
....
$this->catalogSession = $catalogSession;
....
}
তারপরে আপনি ক্লাসের ভিতরে ক্যাটালগ সেশনটি এভাবে ব্যবহার করতে পারেন:
$this->catalogSession->setMyValue('test');
$this->catalogSession->getMyValue();
[সম্পাদনা]
টেমপ্লেটগুলিতে আপনার সেশন ব্যবহার করা উচিত নয়।
আপনার ব্লক শ্রেণিতে এমন মোড়ক তৈরি করা উচিত যা মানগুলি সেট করতে / পাওয়ার জন্য টেম্পলেটগুলি ব্যবহার করতে পারে।
উপরের উদাহরণটি ব্যবহার করে, ব্লকে পদ্ধতিগুলি তৈরি করুন
public function setSessionData($key, $value)
{
return $this->catalogSession->setData($key, $value);
}
public function getSessionData($key, $remove = false)
{
return $this->catalogSession->getData($key, $remove);
}
তবে আপনি যদি সত্যিই টেমপ্লেটে সেশনটি ব্যবহার করতে চান তবে সেশনটি পাওয়ার জন্য আপনি কেবল আপনার ব্লকে একটি মোড়ক তৈরি করতে পারেন:
public function getCatalogSession()
{
return $this->catalogSession;
}
তারপরে আপনি টেমপ্লেটে এটি করতে পারেন:
$this->getCatalogSession()->setMyValue('test');
$this->getCatalogSession()->getMyValue();
unsMyValue
এগুলি ম্যাজেন্টো 2-তে সমস্ত সেশনের ধরণ
1) \Magento\Catalog\Model\Session //vendor/magento/module-catalog/Model/Session.php
2) \Magento\Newsletter\Model\Session //vendor/magento/module-newsletter/Model/Session.php
3) \Magento\Persistent\Model\Session //vendor/magento/module-persistent/Model/Session.php
4) \Magento\Customer\Model\Session //vendor/magento/module-customer/Model/Session.php
5) \Magento\Backend\Model\Session //vendor/magento/module-backend/Model/Session.php
6) \Magento\Checkout\Model\Session //vendor/magento/module-checkout/Model/Session.php
ম্যাজেন্টো 2 ইসিজিএম 2 কোডিং স্ট্যান্ডার্ড অনুসারে আপনি প্রথমে সেশন ক্লাস ব্যবহার করেন তারপর আপনি এটি কনস্ট্রাক্টরে পাস করতে পারেন অন্যথায় এই ত্রুটিটি প্রদর্শিত হবে
সেশন অবজেক্ট কনস্ট্রাক্টরে অনুরোধ করা উচিত নয়। এটি কেবল একটি পদ্ধতি আর্গুমেন্ট হিসাবে পাস করা যেতে পারে।
সেশনে আপনি কীভাবে ডেটা সেট করতে এবং পেতে পারেন তা এখানে
namespace vendor\module\..;
use Magento\Catalog\Model\Session as CatalogSession;
use Magento\Customer\Model\Session as CustomerSession;
use Magento\Checkout\Model\Session as CheckoutSession;
use \Magento\Framework\Session\SessionManagerInterface as CoreSession
class ClassName {
...
protected $_coreSession;
protected $_catalogSession;
protected $_customerSession;
protected $_checkoutSession;
public function __construct(
....
CoreSession $coreSession,
CatalogSession $catalogSession,
CustomerSession $customerSession,
CheckoutSession $checkoutSession,
....
){
....
$this->_coreSession = $coreSession;
$this->_catalogSession = $catalogSession;
$this->_checkoutSession = $checkoutSession;
$this->_customerSession = $customerSession;
....
}
public function getCoreSession()
{
return $this->_coreSession;
}
public function getCatalogSession()
{
return $this->_catalogSession;
}
public function getCustomerSession()
{
return $this->_customerSession;
}
public function getCheckoutSession()
{
return $this->_checkoutSession;
}
}
মান নির্ধারণ করতে
$this->getCustomerSession()->setMyValue('YourValue');
মান পেতে
$this->getCustomerSession()->getMyValue();
আনসেট সেশন মান জন্য
$this->getCustomerSession()->unsMyValue();