投稿者 |
スレッド |
maruaki |
投稿日時: 2011/12/1 14:59
対応状況: −−−
|
半人前 登録日: 2011/10/22 居住地: 東京 投稿: 14 |
Re: cart内で追加情報を入れさせたい Ringoさま
遅くなりましたが、思い通りの動作ができました!!
決済モジュールを入れたら色々マージする必要があり、すっかり遅くなってしまいました。
ありがとうございました!!
|
|
|
ゲスト |
投稿日時: 2011/11/21 15:23
対応状況: −−−
|
|
Re: cart内で追加情報を入れさせたい 元々から、配列対応でした。。。(^^; ざっくりは、以下の感じでしょうか、、、 かごの中なので、要査読 & 要厳密動作確認、、、です。。。
1.data/Smarty/templates/default/cart/index.tpl
 1)
                        <td class="alignC"><!--{$item.quantity}-->
                            
                            <!-- hideki-s -->
                            <input type="hidden" name="quantity[<!--{$item.cart_no}-->]>" value="<!--{$item.quantity}-->" />
                           
                            
                            <ul id="quantity_level">
                                <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>
                                <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>
                            </ul>
                        </td>
                        
                        <!-- & hideki-s -->
                        <td class="alignC">
                            <select name="grade_sel[<!--{$item.cart_no}-->]">
                                <!--{html_options options=$arrGrade selected=$item.grade}-->
                            </select>
                            <a href="?" onclick="fnFormModeSubmit('form<!--{$key}-->','grade_cal','cart_no','<!--{$item.cart_no}-->'); return false">計算</a>
                            <br />
                            <!--{$arrGrade[$item.grade]|h}-->:<br /><!--{$arrGradePrice[$item.grade]|number_format}-->円
                            <br />
                           
                            <div class="attention"><!--{$arrErr.size[$item.cart_no]}--></div>
                           
                            サイズ:<input type="text" name="size[<!--{$item.cart_no}-->]" value="<!--{$item.size|h}-->" class="box60" />
                        </td>
                        <!-- hideki-s & -->
                        
2.data/class_extends/page_extends/cart/LC_Page_Cart_Ex.php
 1)
        case 'confirm':
            // カート内情報の取得
            $cartList = $objCartSess->getCartList($cartKey);
            // カート商品が1件以上存在する場合
            if(count($cartList) > 0) {
               
                // サイズ & hideki-s
                $this->arrErr = $this->lfCheckError($objFormParam);
                $max = count($cartList);
                
                for ($i = 0; $i < $max; $i++) {
                   if (SC_Utils_Ex::isBlank($this->arrErr["size"][$i])) {
                        $objCartSess->setSize($size, $max, $cartKey);
                   }
                }
                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    // カートを購入モードに設定
                    $this->lfSetCurrentCart($objSiteSess, $objCartSess, $cartKey);
                    // 購入ページへ
                    SC_Response_Ex::sendRedirect(SHOPPING_URL);
                    exit;
                }
                // hideki-s &
               
            }
            break;
 2)
   
    /**
     * 入力内容のチェックを行う.
     *
     * 追加の必須チェック, 相関チェックを行うため, SC_CheckError を使用する.
     *
     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
     * @return array エラー情報の配
     */
    function lfCheckError(&$objFormParam) {
        // 入力値の変換
        $objFormParam->convParam();
        $arrParams = $objFormParam->getHashArray();
        $objErr = new SC_CheckError_Ex($arrParams);
        $objErr->arrErr = $objFormParam->checkError();
        return $objErr->arrErr;
    }
   
|
|
|
maruaki |
投稿日時: 2011/11/21 11:42
対応状況: −−−
|
半人前 登録日: 2011/10/22 居住地: 東京 投稿: 14 |
Re: cart内で追加情報を入れさせたい Ringoさま ありがとうございます。 バリデーションで悩んでましたので、そこ含めやってみます。
|
|
|
ゲスト |
投稿日時: 2011/11/19 12:52
対応状況: −−−
|
|
Re: cart内で追加情報を入れさせたい 引用: テキスト入力にした場合、いづれの方法にせよ、バリデーションチェックが必要ですね。 先の下記の部分を、とりあえず、修正しておきました。 $objFormParam->addParam("サイズ", 'size', STEXT_LEN, 'KVa', array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); #配列のバリデーションチェックコードが、どこかにあった様な。。。
|
|
|
ゲスト |
投稿日時: 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)
       //hideki -s
       $size = $objFormParam->getValue('size');
       switch($this->mode) {
       case 'confirm':
           // カート内情報の取得
           $cartList = $objCartSess->getCartList($cartKey);
           // カート商品が1件以上存在する場合
           if(count($cartList) > 0) {
               // サイズ & hideki-s
               $max = count($cartList);
               $objCartSess->setSize($size, $max, $cartKey);
               // hideki-s &
               // カートを購入モードに設定
               $this->lfSetCurrentCart($objSiteSess, $objCartSess, $cartKey);
               // 購入ページへ
               SC_Response_Ex::sendRedirect(SHOPPING_URL);
               exit;
           }
           break;
2)
       // サイズ hideki-s
       $objFormParam->addParam("サイズ", 'size', STEXT_LEN, 'KVa', array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
4.data/class_extends/SC_CartSession_Ex.php
1)
   // サイズ hideki-s
   function setSize($size, $max, $productTypeId) {
       for ($i = 0; $i <= $max; $i++) {
           $this->cartSession[$productTypeId][$i]['size'] = $size[$i];
       }
   }
|
|
|
maruaki |
投稿日時: 2011/11/18 10:38
対応状況: −−−
|
半人前 登録日: 2011/10/22 居住地: 東京 投稿: 14 |
Re: cart内で追加情報を入れさせたい Ringoさま。
ありがとうございます。教えたいただいたページで大体考えていることができました。
javascriptのfnFormModeSubmitを使わずに「購入手続きへ」ボタンを押した際にセッションへ入れてしまう方法はありますでしょうか?
ちょっと危険かもしれませんが、後学のためにも教えていただけると助かります。
よろしくお願いいたします。
|
|
|
maruaki |
投稿日時: 2011/11/17 12:42
対応状況: −−−
|
半人前 登録日: 2011/10/22 居住地: 東京 投稿: 14 |
Re: cart内で追加情報を入れさせたい Ringoさま、ありがとうございます。 拝見しました。 SC_CartSession_Ex.rtf を参考にやってみます。
|
|
|
ゲスト |
投稿日時: 2011/11/13 16:54
対応状況: −−−
|
|
Re: cart内で追加情報を入れさせたい
|
|
|
maruaki |
投稿日時: 2011/11/11 20:39
対応状況: −−−
|
半人前 登録日: 2011/10/22 居住地: 東京 投稿: 14 |
Re: cart内で追加情報を入れさせたい 冷静に考えたら、$cart_noとセットで値をformから引き出して格納する必要があるので、単純に表から変数を与えてセッションに格納するわけにはいかないです。 どこかループの中でセットで取得する必要があります。
申し訳ありませんが、引き続きお願いいたします。
|
|
|
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 --------------
|
|
|