मैगनेटो 1 में सत्र के लिए समकक्ष क्या है
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Magento 2 में ही?
मैगनेटो 1 में सत्र के लिए समकक्ष क्या है
Mage::getSingleton('core/session')->setMyValue('test');
Mage::getSingleton('core/session')->unsMyValue();
Magento 2 में ही?
जवाबों:
मुझे इसके लिए Magento2 में बराबर तरीका मिला:
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();
}
इस तरह से हम कस्टम मान सेट कर सकते हैं यदि हमारा सत्र मूल्य नीचे के सत्रों से संबंधित नहीं है:
Magento 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
Magento 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
Magento 2 ECGM2 कोडिंग मानक के अनुसार आप पहले सत्र वर्ग का उपयोग करते हैं फिर आप इसे कंस्ट्रक्टर में पास कर सकते हैं अन्यथा यह त्रुटि दिखाई जाएगी
सत्र ऑब्जेक्ट निर्माता में अनुरोध नहीं किया जाना चाहिए। इसे केवल विधि तर्क के रूप में पारित किया जा सकता है।
यहां बताया गया है कि आप सत्र में डेटा कैसे सेट और प्राप्त कर सकते हैं
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();