6

誰かがセッション変数が保持されている場所を説明できますか?

コントローラのheader.phpにいくつかのセッション変数を追加しました。次に例を示します。

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

これはサイトをロードするときに機能し、製品をクリックすると、Opencartによって設定されたを除くすべての変数が失われ[language]ます。[currency][cart]

[language]変数を設定したり、、[currency]を設定したりする別のファイルやコントローラーファイルがあると思いますが、[cart]見つかりません。

前もって感謝します。

4

5 に答える 5

13

セッション値はファイルに設定されません。セッション変数を設定する場合は、使用します

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

アクセスしたばかりの値を取得するには

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

たとえば、エコーするには次を使用します

echo $this->session->data['variable_name_here'];
于 2011-12-12T11:40:05.317 に答える
2

セッション変数を保持するファイルはありません。カートを開くセッションは、「system/library/Session.php」を使用して作成されます。開いているカートで、このようなセッションを作成できます。

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

このセッションは、このように開いているカートのどこからでも呼び出すことができます。

<?php
     echo $this->session->data['session_name'];
?>
于 2015-04-14T11:02:27.967 に答える
2

ここでは、変数をセッションに保存します。

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.phpatindexメソッドでそのセッション変数をチェックし、設定されている場合は$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これで、通知を避けながら実行する必要があります...

于 2014-03-13T04:03:57.547 に答える
1

少し遅れたと思いますが、セッションを処理するメインクラスは system/library/session.php にあり、パブリック変数 $data があり、コンストラクターで $_SESSION を処理します。したがって、 $this->session->data に何を入れてもマージされます。

それが有益であることを願っています。

ありがとう

于 2012-10-07T09:41:00.080 に答える