バージョン選択

フォーラム

メニュー

オンライン状況

72 人のユーザが現在オンラインです。 (60 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 72
もっと...

サイト内検索

質問 > フロント機能 > cart内で追加情報を入れさせたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
maruaki
投稿日時: 2011/11/11 16:59
対応状況: −−−
半人前
登録日: 2011/10/22
居住地: 東京
投稿: 14
cart内で追加情報を入れさせたい
お世話になっております。
EC-Cube 2.114で商品詳細画面でなく、カートで商品ごとにサイズなどの情報を入れてもらおうと考えています。

ためしに商品詳細画面で追加情報をformで入れ、セッションに格納、cartに反映され、確認画面まで持ってこれるのは確認しました。
しかしながら、cartで入れた追加情報のformの値がうまくセッションに反映されません。

やり方としては、SC_CartSession.phpのSetQuantityを参考に、以下のような関数を作成、
function setCustomer($customer_use, $customer_hight, $customer_style, $cart_no, $productTypeId) {
$max = $this->getMax($productTypeId);
for ($i = 0; $i <= $max; $i++) {
if ($this->cartSession[$productTypeId][$i]['cart_no'] == $cart_no) {
$this->cartSession[$productTypeId][$i]['customer_use'] = $customer_use;
$this->cartSession[$productTypeId][$i]['customer_hight'] = $customer_hight;
$this->cartSession[$productTypeId][$i]['customer_style'] = $customer_style;
}
}
}

LC_Page_Cart.phpのaction()、case 'confirm'の中で関数に対し変数を投げればよいと考えています。

ですが、LC_Page_Cart.phpでうまくformの値が取得できません。

Formの値を取得するにはSC_FormParam.phpのgetValue()を使えばよいと思うのですが、うまくいきません。

お分かりの方がいましたら、お助けいただけないでしょうか。

よろしくお願いいたします。

--------------
EC-Cube 2.114
PHP 5.3.5
Mysql 5.1.54
--------------
maruaki
投稿日時: 2011/11/11 20:39
対応状況: −−−
半人前
登録日: 2011/10/22
居住地: 東京
投稿: 14
Re: cart内で追加情報を入れさせたい
冷静に考えたら、$cart_noとセットで値をformから引き出して格納する必要があるので、単純に表から変数を与えてセッションに格納するわけにはいかないです。
どこかループの中でセットで取得する必要があります。

申し訳ありませんが、引き続きお願いいたします。
ゲスト
投稿日時: 2011/11/13 16:54
対応状況: −−−
Re: cart内で追加情報を入れさせたい
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=9192&forum=5&post_id=44722#forumpost44722

を参照頂ければ、某かの助けにはなれるかと、、、思います。。。

「mtb_...」は不要。
「セレクトボックス」を「テキストボックス」に変更。
maruaki
投稿日時: 2011/11/17 12:42
対応状況: −−−
半人前
登録日: 2011/10/22
居住地: 東京
投稿: 14
Re: cart内で追加情報を入れさせたい
Ringoさま、ありがとうございます。
拝見しました。
SC_CartSession_Ex.rtf
を参考にやってみます。

maruaki
投稿日時: 2011/11/18 10:38
対応状況: −−−
半人前
登録日: 2011/10/22
居住地: 東京
投稿: 14
Re: cart内で追加情報を入れさせたい
Ringoさま。

ありがとうございます。教えたいただいたページで大体考えていることができました。

javascriptのfnFormModeSubmitを使わずに「購入手続きへ」ボタンを押した際にセッションへ入れてしまう方法はありますでしょうか?

ちょっと危険かもしれませんが、後学のためにも教えていただけると助かります。

よろしくお願いいたします。
ゲスト
投稿日時: 2011/11/18 17:28
対応状況: −−−
Re: cart内で追加情報を入れさせたい
かごの中だけですが、、、こんな感じでしょうか。。。


1.data/Smarty/templates/default/cart/index.tpl

1)サイズ:<input type="text" name="size[<!--{$item.cart_no}-->]" value="<!--{$item.size|h}-->" class="box60" />

2.data/Smarty/templates/default/shopping/confirm.tpl

1)サイズ:<!--{$item.size|h}-->

3.data/class_extends/page_extends/cart/LC_Page_Cart_Ex.php

1)
&#160; &#160; &#160; &#160;//hideki -s
&#160; &#160; &#160; &#160;$size = $objFormParam->getValue('size');

&#160; &#160; &#160; &#160;switch($this->mode) {
&#160; &#160; &#160; &#160;case 'confirm':
&#160; &#160; &#160; &#160; &#160; &#160;// カート内情報の取得
&#160; &#160; &#160; &#160; &#160; &#160;$cartList = $objCartSess->getCartList($cartKey);
&#160; &#160; &#160; &#160; &#160; &#160;// カート商品が1件以上存在する場合
&#160; &#160; &#160; &#160; &#160; &#160;if(count($cartList) > 0) {

&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;// サイズ & hideki-s
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;$max = count($cartList);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;$objCartSess->setSize($size, $max, $cartKey);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;// hideki-s &

&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;// カートを購入モードに設定
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;$this->lfSetCurrentCart($objSiteSess, $objCartSess, $cartKey);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;// 購入ページへ
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;SC_Response_Ex::sendRedirect(SHOPPING_URL);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;exit;
&#160; &#160; &#160; &#160; &#160; &#160;}
&#160; &#160; &#160; &#160; &#160; &#160;break;

2)
&#160; &#160; &#160; &#160;// サイズ hideki-s
&#160; &#160; &#160; &#160;$objFormParam->addParam("サイズ", 'size', STEXT_LEN, 'KVa', array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));

4.data/class_extends/SC_CartSession_Ex.php

1)
&#160; &#160;// サイズ hideki-s
&#160; &#160;function setSize($size, $max, $productTypeId) {
&#160; &#160; &#160; &#160;for ($i = 0; $i <= $max; $i++) {
&#160; &#160; &#160; &#160; &#160; &#160;$this->cartSession[$productTypeId][$i]['size'] = $size[$i];
&#160; &#160; &#160; &#160;}
&#160; &#160;}

ゲスト
投稿日時: 2011/11/19 12:52
対応状況: −−−
Re: cart内で追加情報を入れさせたい
引用:
ちょっと危険かもしれませんが、

テキスト入力にした場合、いづれの方法にせよ、バリデーションチェックが必要ですね。

先の下記の部分を、とりあえず、修正しておきました。
$objFormParam->addParam("サイズ", 'size', STEXT_LEN, 'KVa', array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));

#配列のバリデーションチェックコードが、どこかにあった様な。。。
maruaki
投稿日時: 2011/11/21 11:42
対応状況: −−−
半人前
登録日: 2011/10/22
居住地: 東京
投稿: 14
Re: cart内で追加情報を入れさせたい
Ringoさま
ありがとうございます。
バリデーションで悩んでましたので、そこ含めやってみます。
ゲスト
投稿日時: 2011/11/21 15:23
対応状況: −−−
Re: cart内で追加情報を入れさせたい
元々から、配列対応でした。。。(^^;

ざっくりは、以下の感じでしょうか、、、
かごの中なので、要査読 & 要厳密動作確認、、、です。。。

1.data/Smarty/templates/default/cart/index.tpl
&#160;1)
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <td class="alignC"><!--{$item.quantity}-->
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <!-- hideki-s -->
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <input type="hidden" name="quantity[<!--{$item.cart_no}-->]>" value="<!--{$item.quantity}-->" />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <ul id="quantity_level">
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <li><a href="?" onclick="fnFormModeSubmit('form<!--{$key}-->','up','cart_no','<!--{$item.cart_no}-->'); return false"><img src="<!--{$TPL_URLPATH}-->img/button/btn_plus.jpg" width="16" height="16" alt="+" /></a></li>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <li><a href="?" onclick="fnFormModeSubmit('form<!--{$key}-->','down','cart_no','<!--{$item.cart_no}-->'); return false"><img src="<!--{$TPL_URLPATH}-->img/button/btn_minus.jpg" width="16" height="16" alt="-" /></a></li>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; </ul>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; </td>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <!-- & hideki-s -->
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <td class="alignC">
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <select name="grade_sel[<!--{$item.cart_no}-->]">
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <!--{html_options options=$arrGrade selected=$item.grade}-->
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; </select>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <a href="?" onclick="fnFormModeSubmit('form<!--{$key}-->','grade_cal','cart_no','<!--{$item.cart_no}-->'); return false">計算</a>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <!--{$arrGrade[$item.grade]|h}-->:<br /><!--{$arrGradePrice[$item.grade]|number_format}-->円
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <div class="attention"><!--{$arrErr.size[$item.cart_no]}--></div>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; サイズ:<input type="text" name="size[<!--{$item.cart_no}-->]" value="<!--{$item.size|h}-->" class="box60" />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; </td>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <!-- hideki-s & -->
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;
2.data/class_extends/page_extends/cart/LC_Page_Cart_Ex.php
&#160;1)
&#160; &#160; &#160; &#160; case 'confirm':
&#160; &#160; &#160; &#160; &#160; &#160; // カート内情報の取得
&#160; &#160; &#160; &#160; &#160; &#160; $cartList = $objCartSess->getCartList($cartKey);
&#160; &#160; &#160; &#160; &#160; &#160; // カート商品が1件以上存在する場合
&#160; &#160; &#160; &#160; &#160; &#160; if(count($cartList) > 0) {

&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; // サイズ & hideki-s
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $this->arrErr = $this->lfCheckError($objFormParam);

&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $max = count($cartList);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; for ($i = 0; $i < $max; $i++) {
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;if (SC_Utils_Ex::isBlank($this->arrErr["size"][$i])) {
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $objCartSess->setSize($size, $max, $cartKey);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;}
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; if (SC_Utils_Ex::isBlank($this->arrErr)) {
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; // カートを購入モードに設定
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $this->lfSetCurrentCart($objSiteSess, $objCartSess, $cartKey);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; // 購入ページへ
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; SC_Response_Ex::sendRedirect(SHOPPING_URL);
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; exit;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; // hideki-s &
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 
&#160; &#160; &#160; &#160; &#160; &#160; }
&#160; &#160; &#160; &#160; &#160; &#160; break;

&#160;2)
&#160; &#160; 
&#160; &#160; /**
&#160; &#160; &#160;* 入力内容のチェックを行う.
&#160; &#160; &#160;*
&#160; &#160; &#160;* 追加の必須チェック, 相関チェックを行うため, SC_CheckError を使用する.
&#160; &#160; &#160;*
&#160; &#160; &#160;* @param SC_FormParam $objFormParam SC_FormParam インスタンス
&#160; &#160; &#160;* @return array エラー情報の配
&#160; &#160; &#160;*/
&#160; &#160; function lfCheckError(&$objFormParam) {
&#160; &#160; &#160; &#160; // 入力値の変換
&#160; &#160; &#160; &#160; $objFormParam->convParam();

&#160; &#160; &#160; &#160; $arrParams = $objFormParam->getHashArray();
&#160; &#160; &#160; &#160; $objErr = new SC_CheckError_Ex($arrParams);
&#160; &#160; &#160; &#160; $objErr->arrErr = $objFormParam->checkError();

&#160; &#160; &#160; &#160; return $objErr->arrErr;
&#160; &#160; }
&#160; &#160; 
maruaki
投稿日時: 2011/12/1 14:59
対応状況: −−−
半人前
登録日: 2011/10/22
居住地: 東京
投稿: 14
Re: cart内で追加情報を入れさせたい
Ringoさま

遅くなりましたが、思い通りの動作ができました!!

決済モジュールを入れたら色々マージする必要があり、すっかり遅くなってしまいました。

ありがとうございました!!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,900名です
総投稿数は110,006件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.