Мне нужно иметь возможность хранить некоторые пользовательские переменные сеанса, которые существуют для пользовательских, независимо от того, вошли они в систему или нет, но по какой-то причине мои сеансы продолжают удалять сами.
Я использовал этот пример, помогающий мне добавить мой код сеанса.
Вот мой код
Файл блока
<?php
namespace MyVendor\MyModel\Block;
use Magento\Framework\View\Element\Template;
class ProductSearch extends Template {
protected $_customSession;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Customer\Model\Session $customSession,
array $data = []
){
parent::__construct($context, $data);
$this->_customSession = $customSession;
}
//Get the car model from the session
public function getSessionCarModel(){
return $this->_customSession->getCarModel();
}
//Unset the car model from the session
public function unsetSessionCarModel(){
return $this->_customSession->unsCarModel();
}
}
ивот верхняя часть моего файла шаблона, который сортирует сеанс при его загрузке
productsearchbanner.phtml
<code><?php
//If the user has selected a new model, unset our session then start a new one
if(isset($_POST['modelSelect'])){
//Unset the other sessions
$block->unsetSessionCarModel();
//Set the model session
$block->setSessionCarModel($_POST['model']);
}
echo '<pre>';
var_dump($_SESSION);
echo '
';?>
Способ работы кода: если установлено значение $_POST['modelSelect']
, пользователь пришел со страницы выбора модели, поэтому нам нужно снова запустить процесс и сбросить их сеанс. , но если этого не произошло, сеанс должен остаться прежним.
Моя проблема в том, что когда я прихожу со страницы выбора модели, моя переменная сеанса без проблем показывает в дампе var, как показано ниже.
Но потом, как только я перехожу на любую другую страницу на моем сайте (например, на главную страницу), а затем снова на страницу поиска продукта,сеанс очищен?
Что я делаю не так? Почему мой сеанс очищается каждый раз, когда я загружаю страницу? Мне просто нужно иметь возможность установить эквивалент $_SESSION['carModel']
, и он будет постоянным для этого пользователя, независимо от того, вошли они в систему или нет, или куда они заходят.
Может кто-нибудь пожалуйстанаправить меня в правильном направлении?