Переменные сессии в Opencart - PullRequest
4 голосов
/ 12 декабря 2011

Может кто-нибудь объяснить, где хранятся переменные сеанса?

Я добавил некоторые переменные сеанса в header.php в контроллере, например:

$this->session->data['day']=date("d",strtotime($row['startdate']));

Это работает при загрузке сайта, и когда я нажимаю на товар, все переменные исчезают, кроме [language], [currency] и [cart], которые установлены Opencart.

Я предполагаю, что есть другой файл или файл контроллера, где я устанавливаю переменные, или где установлены [language], [currency] и [cart], но я не могу его найти.

Заранее спасибо.

Ответы [ 5 ]

11 голосов
/ 12 декабря 2011

Значения сеанса не заданы в файле. Если вы хотите установить переменную сеанса, используйте

$this->session->data['variable_name_here'] = 'data value here';

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

$this->session->data['variable_name_here']

Например, чтобы повторить его, используйте

echo $this->session->data['variable_name_here'];
2 голосов
/ 14 апреля 2015

Нет файла, который содержал бы переменные сеанса. Сеансы открытой корзины создаются с помощью «system / library / Session.php». Вы можете создать такую ​​сессию в открытой корзине.

<?php
     $this->session->data['session_name'] = 'session value';
?>

Теперь вы можете вызывать этот сеанс в любом месте в открытой корзине, как это.

<?php
     echo $this->session->data['session_name'];
?>
2 голосов
/ 13 марта 2014

Здесь я бы сохранил переменные в сеансе:

public function receive() {
    $this->session->data['guest_name'] = $this->request->post['name'];
    $this->session->data['guest_address'] = $this->request->post['address'];
}

Теперь в методе catalog/controller/checkout/guest.php в index проверьте переменные этого сеанса и, если установлено, сохраните значение в массиве $this->data для представления в шаблон:

if(isset($this->session->data['guest_name'])) { // it is enough to check only for one variable and only if it is set
    $this->data['guest_name'] = $this->session->data['guest_name'];
    $this->data['guest_address'] = $this->session->data['guest_address'];
}

После этого Вы можете просто отобразить эти значения в своем шаблоне (все еще проверяя, существует ли):

<?php if(isset($guest_name)) { ?>
<div><?php echo $guest_name . ' - ' . $guest_address; ?></div>
<?php } ?>

Теперь Вы должны быть готовы, избегая любых undefined variable уведомлений ...

1 голос
/ 07 октября 2012

Я думаю, что немного опоздал, но основной класс, который обрабатывает сессии, находится в system / library / session.php, который имеет открытую переменную $ data и обрабатывает $ _SESSION в конструкторе. так что бы вы ни добавили в $ this-> session-> data, он сливается.

Надеюсь, это будет полезно.

спасибо

0 голосов
/ 13 марта 2014

/ system / library / customer.php содержит $ this-> session-> data ['customer_id'];

...