Magento 2 пользовательских сеанса не соответствует - PullRequest
0 голосов
/ 16 октября 2019

Я создал свои собственные сеансы magento, используя это руководство , но сессии настолько непостоянны, что сводят меня с ума!

Я создал список функций сеансов, так что все установщики сеансов,getter и unsetter используют модель сеанса.

Например, в моем app / code / MyModule / MySession / Model / Session.php file

есть множество таких функций
//Set the car model from the session
public function setSessionCarModel($value){
    return $this->_session->setCarModel($value);
}

//Get the car model from the session
public function getSessionCarModel(){
    return $this->_session->getCarModel();
}

//Unset the car model from the session
public function unsetSessionCarModel(){
    return $this->_session->unsCarModel();
}

Затем я пытаюсь установить, получить и сбросить мои сеансы в нескольких местах на моем сайте, вот несколько примеров (я знаю, что мне не следовало использовать диспетчер объектов в файлах .phtml перед этим. будет замечено)

.phtml

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customSession = $objectManager->create('\MyModule\MySession\Model\Session');
$carModel = $customSession->getSessionCarModel();

Ajax-файл

namespace MyVendor\MyModule\Controller\Ajax;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\Controller\ResultFactory; 

class Index extends Action {
    protected $_customSession;

    public function __construct(
        Context $context,
        \MyModule\MySession\Model\Session $customSession
    )
    {
        parent::__construct($context);
        $this->_customSession = $customSession;
    }


    public function execute(){
            $this->_customSession->setSessionCarModel(1);
    }
}

и множество других мест по всему сайту, но по какой-то причине мои сеансы кажутся непоследовательными, и это сводит меня с ума!

Иногда он вообще не устанавливает их, иногда он захватывает старые значения и т. д.

Я делаю что-то не так с тем, как я выполняю CASТом сессий?

Если кто-нибудь может помочь пролить свет на это, я был бы очень признателен!

Версия Magento - 2.3.2

СессияСпособ хранения - Файлы

Режим - Разработка

1 Ответ

1 голос
/ 16 октября 2019

Код, вставленный в файл phtml, может вызвать проблемы. Потому что вы используете менеджер объектов напрямую. Это может дать противоречивые результаты, особенно если вы пытаетесь получить доступ к информации, которая зависит от контекста приложения. Sessions / Cookies - все эти примеры.

В своем файле phtml вы можете использовать JavaScript для запроса вашего контроллера ajax и получения оттуда данных сеанса. Уже написал подобный ответ здесь:

Сеанс Magento 2 отменяется сам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...