2

プレスタショップ

クッキーの問題が 1 つあります。prestashop 1.4.7 では、setcookie を使用してカスタム Cookie 変数を作成しますが、フロント コントローラーにアクセスして割り当てようとすると、Cookie の設定値が取得されません。ここに私のスクリプトがあります:

ページ: checkpostcode.php

include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');
global $cookie;

setcookie("is_postcode_checked", 1, time()+600, "/", "", 1); // Set the cookie in basepath

frontcontroller.php ページで: を使用してアクセスし、 smarty$_COOKIE配列に割り当てます。

'is_postcode_checked' => $_COOKIE['is_postcode_checked'] // Getting null value for cookie

ページ: checkpostcode.tpl

{$cookie->_get(postcode_checked_msg)}  // here get the is_postcode_checked value but 

is_postcode_checkedしかし、変数値を取得できません。

4

3 に答える 3

3

setcookie()PHP関数を使用するのではなく、Prestashop 独自の Cookie クラスを完全に使用する必要があります。このクラスは、これを簡単に行えるようにする「マジック メソッド」__get()__set()__unset()およびを使用します。__isset()

「ページ」コードを試してみてください(追加のページコントローラーのようには見えないため、これをどのように実行しているかわかりません):

global $cookie;

$cookie->is_postcode_checked = 1;
$cookie->write(); // I think you'll need this as it doesn't automatically save
...

そして、あなたの FrontController オーバーライドで:

global $cookie;

if (isset($cookie->is_postcode_checked))
    $is_postcode_checked = $cookie->is_postcode_checked;
else
    $is_postcode_checked = 0;

変数 $is_postcode_checked を対応する smarty 変数に割り当てて、テンプレートで使用できます。

于 2012-04-24T15:00:48.797 に答える
3

Prestashop cookie クラスから cookie をフェッチする場合は、このクラスにも格納する必要があります。

die()コントローラーで関数を使用して、Cookie セットを確認します

Paul が言ったように、$cookieデータの保存と取得にはグローバル クラスのみを使用する方がよいでしょう。

于 2012-12-31T15:39:12.270 に答える