質問 > フロント機能 > GET でカゴに商品を追加したい |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
mirageSE |
投稿日時: 2009/2/2 12:04
対応状況: −−−
|
新米 登録日: 2009/1/29 居住地: 大阪 投稿: 3 |
Re: GET でカゴに商品を追加したい sendRedirect すると セッションIDが変わるとか、
そういうことってありますか? あと、普通に商品を購入しようとした場合は、 SC_SiteSession で作られるような [site] キーもセッションに保存されるはずなのですが、 なぜか、ここには保存されていないのです…。 |
mirageSE |
投稿日時: 2009/1/30 10:58
対応状況: −−−
|
新米 登録日: 2009/1/29 居住地: 大阪 投稿: 3 |
Re: GET でカゴに商品を追加したい すみません、説明不足でした…。
商品詳細ページが商品詳細ページにPOSTしているものと 同じパラメータを送信しているつもりなのですが、 うまくカートに商品が入らないのです。 少しソースを載せてみます。 ============================================== === LC_Page_Cart_Ex.php ============================================== function process() { // parent::process(); global $objCampaignSess; $objView = new SC_SiteView(false); $objCartSess = new SC_CartSession("", false); $objSiteSess = new SC_SiteSession(); $objCampaignSess = new SC_CampaignSession(); $objSiteInfo = $objView->objSiteInfo; $objCustomer = new SC_Customer(); $db = new SC_Helper_DB_Ex(); $objQuery = new SC_Query(); // 基本情報の取得 $arrInfo = $objSiteInfo->data; // 商品購入中にカート内容が変更された。 if($objCartSess->getCancelPurchase()) { $this->tpl_message = "商品購入中にカート内容が変更されましたので、お手数ですが購入手続きをやり直して下さい。"; } if (!empty($_REQUEST['product_id']) && empty($_REQUEST['mode'])) { $query = array(); $query['product_id'] = $_REQUEST['product_id']; // 商品 ID $query['quantity'] = 1; // 個数 $query['mode'] = 'cart'; // カートモードで送信 header("Location: " . SITE_URL . "products/detail.php?" . http_build_query($query)); return 0; } // (後略) ============================================== === LC_Products_Detail_Ex.php ============================================== function process() { // parent::process(); // (中略) switch($_REQUEST['mode']) { case 'cart': $objCartSess = new SC_CartSession(""); // 入力値の変換 $this->objFormParam->convParam(); $this->arrErr = $this->lfCheckError(); // (中略) $objCartSess->addProduct(array($_REQUEST['product_id'], $classcategory_id1, $classcategory_id2), $this->objFormParam->getValue('quantity')); $this->sendRedirect($this->getLocation(URL_CART_TOP)); break; } // (後略) products/detail.php からカートにリダイレクトする部分、
の行の手前で $_SESSION の中身を出力してみると、 以下のようになっていました。
しかしその後 sendRedirect でカート(cart/index.php) にリダイレクトすると、 「※ 現在カート内に商品はございません。」という エラーメッセージが表示されてしまいます。 なぜじゃ…orz |
seasoft |
投稿日時: 2009/1/29 22:18
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: GET でカゴに商品を追加したい 引用:
URL に mode を付加していないのが原因とか?
|
homan |
投稿日時: 2009/1/29 20:23
対応状況: −−−
|
仙人 登録日: 2007/7/2 居住地: 宮崎県宮崎市 投稿: 633 |
Re: GET でカゴに商品を追加したい 詳細ページのソースを追っかければわかりますが、かごに入れる際は詳細ページの"cart"というmodeでswitch文を通過し、セッションに登録されてからカートの中のページへ移動しているようです。
(つまり、カートの中の商品は購入完了までセッションで管理されている) カート側に同じ仕組みをGETで受け取れるようにカスタマイズしてやれば、なんだか出来そうな気がします。
|
mirageSE |
投稿日時: 2009/1/29 19:02
対応状況: −−−
|
新米 登録日: 2009/1/29 居住地: 大阪 投稿: 3 |
GET でカゴに商品を追加したい 初めまして。mirageSEです。
EC CUBE 2.0 系についての質問です。 GET を用いてカゴに商品を追加出来るようにしたいと考えています。 商品 ID と数量を含んだ URL にアクセスするだけで、 買い物カゴに、その情報で商品が入るようにしたいです。 (実現したい動き : 例) http://www.example.com/cart/index.php?product_id=10&quantity=5 ↓ この URL にアクセスすると、買い物カゴに 商品 ID が 10 の商品が 5 個投入される。 通常の購入遷移では、 商品詳細ページから「カゴに入れる」を押すと、 product_id、quantity、mode がPOSTで送信されるようです。 しかし、GET でこれらの値を送り、 なおかつ、LC_Page_Products_Detail_Ex において 全ての $_POST を $_REQUEST に変えた状態にしても カートに商品が投入されません。 (「※ 現在カート内に商品はございません。」というエラーになります。) ただ、一度通常の方法(商品詳細ページからのPOST)で 商品をカゴに一つでも投入した後であれば、 http://www.example.com/cart/index.php?product_id=10&quantity=5 にアクセスすることで商品が投入されました。 一昨日から考えているのですが、 どうしても詰まってしまい、 何かヒントになればと思い書き込みさせて頂きました。 ご教授いただければ幸いです。 宜しくお願いします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |