2011-12-12 65 views
2

有人可以解释会话变量的持有位置吗?Opencart中的会话变量

我已经在控制器中加入了一些会话变量中的header.php,例如:

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

加载网站的时候,当我点击一个产品这工作,所有的变量都消失了,除了对于由Opencart设置的[language],[currency][cart]

我想有另一个文件或控制器文件,我设置的变量,或者[language],[currency][cart]设置,但我找不到它。

在此先感谢。

+0

尝试也许目录/语言/ en.php或类似的东西?目录/控制器/语言/ en.php。我出来了,所以我现在不能检查 –

+0

彼得。我想你可能会接近那个,但是english.php不是这个文件。如果你确实有时间,我会很感激。谢谢 – user984689

回答

8

会话值未在文件中设置。如果你想设置一个会话变量,使用

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

,并检索您刚刚访问值

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

例如,回声它使用

echo $this->session->data['variable_name_here']; 
+1

谢谢,但我的问题是这些变量保存在哪个文件中; ([language] => en [currency] => USD [cart] => Array()) 我设置了这个; $ this-> session-> data ['day'] = date(“d”,strtotime($ row ['startdate']));在header.php中,当你加载站点时它可以正常工作,但是当点击一个产品时变量会从会话中消失。 – user984689

+1

header.php是为每个页面加载的,所以它不可能让变量消失,除非你以奇怪的方式完成它们。请注意,$ this->数据是本地化的,因此它不会从标题传递到产品模板 –

+0

如果我得到您的问题的权利,那么你远远得不到答案,购物车是在系统/库中设置的最终类/cart.php 语言和货币都是从数据库中检索出来的,并且不要使用$ this(这很愚蠢)$ this会返回一个指向你继承自控制器类的类的指针在controller.php文件中仔细看看它是如何工作的,你会知道该怎么做, – Qchmqs

1

我想我咬后期,但处理会话的主要类是在system/library/session.php中,它具有公共变量$ data并在构造函数中处理$ _SESSION。 所以你放入$ this-> session->它合并的数据。

希望它会有好处。

感谢

0

/system/library/customer.php确实包含$这 - >会话级>数据[ 'CUSTOMER_ID'];在index方法检查

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

现在为会话变量,如果设置,存储$this->data数组中的值呈现给用户的模板:

2

在这里,我将变量保存到一个会话

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通知来完成...

2

没有文件举行的会话变量。 Open cart会话是​​使用“system/library/Session.php”创建的。您可以在打开的购物车中创建像这样的会话。

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

现在,您可以在任何地方打开购物车,然后在此处打电话给此会话。

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