バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 変数宣言と画面遷移

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
gabriel
投稿日時: 2011/11/21 23:41
対応状況: −−−
常連
登録日: 2011/8/18
居住地:
投稿: 35
Re: 変数宣言と画面遷移
返事をもらっていたのにずっと放置してしまったすみませんでした。

中国に出張にいっており、空港にてPCを盗難・・・。
本日、日本に帰国し、今に至ります。

Ringoさんのおかげで、なんとか解決出来そうです。
本当にありがとうございましたっ!!

また何かありましたらよろしくお願いいたします。
ゲスト
投稿日時: 2011/10/28 20:34
対応状況: −−−
Re: 変数宣言と画面遷移
ゲスト
投稿日時: 2011/10/27 20:42
対応状況: −−−
Re: 変数宣言と画面遷移
引用:
エクリプスを使用してやってはみたのですが、
やはり、自分にはちんぷんかんぷんなところが
多々有り、躓いてしまいます。。。

これは、eclipse-phpは使いこなせるがeccubeをトレースしても「ちんぷんかんぷん...」という理解で良いでしょうか?
小生も、当然、初めはそうでした。。。

引用:
tpl側の+を押して、その後に動くプログラムは
わかったのですが、そのプログラムのコードの書き方や
戻った際にセレクトボックスの中を指定したものに
保っておく方法などが難しいです。

こちらの詳細なコードなどはありませんでしょうか?

eccubeの中に「全て」有ります。それを「如何に探し出せる」様になるかです。
小生の場合は『「会社名」「部署名」の追加』を終えてから理解出来る様になりました。

引用:
示して頂いた情報も見てみたのですが、結局答えが
出ておらず、難しいと書いてあるだけでした。。。

でしょうか、、、小生にはヒントや指針が2,3は見えるのですが。。。

引用:
何か良い情報などがあれば、再度指し示して頂ければ
非常に助かるのですが・・・。。。

小生の現在のネタは全て出し尽くしてしまったので、これ以上は無いです。

p.s.
ちょっとした思惑から、「のし...」を「グレード」に変えて「version-2_11-dev」 に適用してみます。
時間が取れるのか、巧くいくのかどうか、、、不明ですが。。。
巧くいったら、また何か提供できると思います。
gabriel
投稿日時: 2011/10/26 23:29
対応状況: −−−
常連
登録日: 2011/8/18
居住地:
投稿: 35
Re: 変数宣言と画面遷移
>Ringo様

毎度、お世話になっております。
非常に役に立つ情報を毎回ありがとうございます。

エクリプスを使用してやってはみたのですが、
やはり、自分にはちんぷんかんぷんなところが
多々有り、躓いてしまいます。。。

tpl側の+を押して、その後に動くプログラムは
わかったのですが、そのプログラムのコードの書き方や
戻った際にセレクトボックスの中を指定したものに
保っておく方法などが難しいです。

こちらの詳細なコードなどはありませんでしょうか?

示して頂いた情報も見てみたのですが、結局答えが
出ておらず、難しいと書いてあるだけでした。。。

何か良い情報などがあれば、再度指し示して頂ければ
非常に助かるのですが・・・。。。

お返事が遅くなり申し訳ありませんが、再度御指南下さい。
ゲスト
投稿日時: 2011/10/25 18:58
対応状況: −−−
Re: 変数宣言と画面遷移
引用:
そして、ラミネートしたものや、ケース付きというオプションをつけることにより、値段を+100円などに変更するという使用になります。

ということであれば、仕様の検討のために、
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=8825&forum=10&post_id=42697#forumpost42697
と、その中の

参考:
http://goo.gl/Xblgk

を、未読であれば、一読されてみてはいかがでしょうか。。。
(「参考」は2.1.2なので、手法は参考にならないと思いますが、、、考え方として。。。)

引用:
以前運営していたサイトでは、規格という形で運営していたのですが(他の方に作成していただいたサイト)
その際に、お客様からいちいち商品を購入するごとに選ぶのが面倒なので、購入するときにいっぺんに変更できるようにしてほしい

eccubeには標準で「規格」を持っていますので、「かごの中だけで規格を動かす」のも一案かとも思いましたが、、、
その場合は『まず』は「数量の掛算」を外さないといけないですね。。。

引用:
引用:
「例:$objCartSess->addPrice(...)」を実行させ、
3.「2度目」の「data/class/pages/cart/LC_Page_Cart.php 」(SC_Response_Ex::reload(...))にて「// カート集計処理」以下を行わせる。

申し訳ないのですが、こちらの部分をもう少し詳しく書いていただけませんか?

今回の案件は想定した「例:$objCartSess->addPrice(...)」では実現出来そうにありませんが、処理の流れとして、同様の
        case 'up'://1個追加
            $objCartSess->upQuantity($cart_no, $cartKey);

を追う事にします。

1.tpl側で「+」を押す。
2.「case 'up':」により、
 $objCartSess->upQuantity($cart_no, $cartKey);が実行され、
 →data/class/SC_CartSession.php内
  function upQuantity($cart_no, $productTypeId) {
  →$this->setQuantity($quantity + 1, $cart_no, $productTypeId);
   →function setQuantity($quantity, $cart_no, $productTypeId) {
    →$this->cartSession[$productTypeId][$i]['quantity'] = $quantity;   
にてcartSessionのquantityが+1されます。
続いて、
3.SC_Response_Ex::reload(array('category_id' => $objFormParam->getValue('category_id')), true);
にて「自分自身」がreloadされ、
4.// カート集計処理
が行われて「小計」他が再計算され「終了」、、、となります。

引用:
あと、商品単価がtplの方では、「$item.productsClass.price02」という記載になっているのですが、これはphp側ではなんという名前になっているのでしょうか?


data/class/pages/cart/LC_Page_Cart.php の91行目
$this->cartItems =& $objCartSess->getAllCartList();
です。
var_dump($this->cartItems);
で、画面に表示すれば
array(1) { [1]=> array(2) { [0]=> &array(11) { ["id"]=> string(2) "10" ["quantity"]=> string(1) "1" ["cart_no"]=> int(1) ["productsClass"]=> array(76) { ["product_id"]=> string(1) "2" ["stock"]=> string(3) "100" ["stock_unlimited"]=> string(1) "0" ["sale_limit"]=> string(1) "5" ["price01"]=> string(4) "1700" ["price02"]=> string(4) "1650" ...
の様に中身を確認することが出来ます。

p.s.
この先、ご自身にてeccubeの「page内クラス」と「SC_...クラス」を縦横無尽に追いかける必要がありますので、
そのためにも、先に記しました『eclipse-php』を利用しての「右クリック」「Open Selection」機能の活用をお薦めします。
既にご活用でしたら、、、失礼しました。。。
gabriel
投稿日時: 2011/10/25 8:45
対応状況: −−−
常連
登録日: 2011/8/18
居住地:
投稿: 35
Re: 変数宣言と画面遷移
>Ringo様
お世話になります。迅速な対応に感謝しております。

>ところで「規格」機能を使用せず「かごの中」での本処理を希望されるのには、なにがしかの思惑が有るとの理解でよろしいでしょうか?

実は、作成中のものは、トレーディングカード販売のECサイトでして、基本的に料金は一律400円、そして購入される枚数が11枚を超えると一律200円の料金に変更するというものです。(10枚で通常4000円なのですが、11枚になると2200円になる様なシステムです)そして、ラミネートしたものや、ケース付きというオプションをつけることにより、値段を+100円などに変更するという使用になります。
以前運営していたサイトでは、規格という形で運営していたのですが(他の方に作成していただいたサイト)その際に、お客様からいちいち商品を購入するごとに選ぶのが面倒なので、購入するときにいっぺんに変更できるようにしてほしいという要望が非常に多く、それが面倒でこのサイトでは買わないとおっしゃる方もいらっしゃったので、今回はこのような仕様にしようと考えました。

引用:

「例:$objCartSess->addPrice(...)」を実行させ、
3.「2度目」の「data/class/pages/cart/LC_Page_Cart.php 」(SC_Response_Ex::reload(...))にて「// カート集計処理」以下を行わせる。

申し訳ないのですが、こちらの部分をもう少し詳しく書いていただけませんか?
あと、商品単価がtplの方では、「$item.productsClass.price02」という記載になっているのですが、これはphp側ではなんという名前になっているのでしょうか?

度々ご迷惑をおかけしますが、宜しくお願いいたします。
ゲスト
投稿日時: 2011/10/24 19:24
対応状況: −−−
Re: 変数宣言と画面遷移
引用:
[私が申し上げたかったのは、カートの中の商品ひとつひとつに
セレクトボックスを設置し、その内容で、現在の単価+αと
いう値段を設定したいという内容でした。

ということで、
引用:
$objCartSess->delProduct($cart_no, $cartKey);
このような変数はどこで最初に宣言されているのでしょうか?

だったのでしょうか?

data/class/SC_CartSession.php

に、各種 function が定義されています。

それで、目的の処理は
1.tpl側にて先の様にselectboxを設け
2.php側にて
        case 'up'://1個追加
            $objCartSess->upQuantity($cart_no, $cartKey);
            SC_Response_Ex::reload(array('category_id' => $objFormParam->getValue('category_id')), true);
            exit;
            break;

を流用して、SC_CartSession.phpに新設する「例:$objCartSess->addPrice(...)」を実行させ、
3.「2度目」の「data/class/pages/cart/LC_Page_Cart.php 」(SC_Response_Ex::reload(...))にて「// カート集計処理」以下を行わせる。

になるかと思います。

ところで「規格」機能を使用せず「かごの中」での本処理を希望されるのには、なにがしかの思惑が有るとの理解でよろしいでしょうか?
gabriel
投稿日時: 2011/10/24 14:30
対応状況: −−−
常連
登録日: 2011/8/18
居住地:
投稿: 35
Re: 変数宣言と画面遷移
>Ringo様

お世話になっております。
毎回サポートしていただきありがとうございます。
少しずつ前に進めており非常に感謝しています。

今回のコードについて、難しい内容ながらも
いろいろと流用出来てとてもありがたいです。

しかし、私の言葉が不適切で要らぬ手間をかけさせて
しまっております。

私が申し上げたかったのは、カートの中の商品ひとつひとつに
セレクトボックスを設置し、その内容で、現在の単価+αと
いう値段を設定したいという内容でした。

確かに上限と書いてしまっており、私の不徳の次第でございます。

もしよろしければ、再度サポートをお願いできませんでしょうか?
ゲスト
投稿日時: 2011/10/24 11:18
対応状況: −−−
Re: 変数宣言と画面遷移
サンプルコードです。

1.data/class/pages/cart/LC_Page_Cart.php

    function init() {
        parent::init();
        $this->tpl_title = "現在のカゴの中";
        $masterData = new SC_DB_MasterData_Ex();
        $this->arrProductType = $masterData->getMasterData("mtb_product_type");
        
        // & hideki-s
        $this->arrCourse[1] = "松";
        $this->arrCourse[2] = "竹";
        $this->arrCourse[3] = "梅";
        // hideki-s &
        
    }


    function action() {

    ...

        case 'delete'://カートから削除
            $objCartSess->delProduct($cart_no, $cartKey);
            SC_Response_Ex::reload(array('category_id' => $objFormParam->getValue('category_id')), true);
            exit;
            break;
            
        // & hideki-s
        case 'course_select'://コースの選択
            if ($objFormParam->getValue('course') == 1) {
                $this->price_limit = "1,000,0000円";
                $this->arrForm['course'] = 1;
            }elseif ($objFormParam->getValue('course') == 2) {
                $this->price_limit = "100,0000円";
                $this->arrForm['course'] = 2;
            }elseif ($objFormParam->getValue('course') == 3) {
                $this->price_limit = "10,0000円";
                $this->arrForm['course'] = 3;
            }else{
                $this->price_limit = "未設定";
            }
            break;
        // hideki-s &

        default:
            break;
        }

    ....
    
    }

   function lfInitParam($arrRequest) {
        $objFormParam = new SC_FormParam_Ex();
        $objFormParam->addParam("カートキー", 'cartKey', INT_LEN, 'n', array('NUM_CHECK',"MAX_LENGTH_CHECK"));
        $objFormParam->addParam("カートナンバー", "cart_no", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"));
        // PC版での値引き継ぎ用
        $objFormParam->addParam("カテゴリID", "category_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"));
        
        // hideki-s 
        $objFormParam->addParam("コース", "course", INT_LEN, 'n', array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
        
        // 値の取得
        $objFormParam->setParam($arrRequest);
        // 入力値の変換
        $objFormParam->convParam();
        return $objFormParam;
    }

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

    ....

&#160; &#160; &#160; &#160; &#160; &#160; <!--{* & hideki-s *}-->
&#160; &#160; &#160; &#160; &#160; &#160; <select name="course" style="<!--{$arrErr.course|sfGetErrorColor}-->">
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <option value="" selected="selected">選択してください</option>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <!--{html_options options=$arrCourse selected=$arrForm.course}-->
&#160; &#160; &#160; &#160; &#160; &#160; </select>
&#160; &#160; &#160; &#160; &#160; &#160; <a href="?" onclick="fnFormModeSubmit('form<!--{$key}-->','course_select','cart_no','<!--{$item.cart_no}-->'); return false">更新</a>
&#160; &#160; &#160; &#160; &#160; &#160; 料金の上限は <!--{$price_limit|h}--> です。
&#160; &#160; &#160; &#160; &#160; &#160; <!--{* hideki-s & *}-->

&#160; &#160; &#160; &#160; &#160; &#160; <table summary="商品情報">
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <colgroup width="10%"></colgroup>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <colgroup width="15%"></colgroup>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <colgroup width="30%"></colgroup>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <colgroup width="15%"></colgroup>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <colgroup width="15%"></colgroup>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <colgroup width="15%"></colgroup>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <tr>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <th class="alignC">削除</th>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <th class="alignC">商品写真</th>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <th class="alignC">商品名</th>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <th class="alignC">単価</th>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <th class="alignC">数量</th>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <th class="alignC">小計</th>
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; </tr>


&#160; &#160; ....
ゲスト
投稿日時: 2011/10/21 22:49
対応状況: −−−
Re: 変数宣言と画面遷移
引用:
もしPHPファイルの中で$test="10";($this->test = "10";
という記述をして
それをtplで使用する際には{!--{$test}--}とすれば、
10が出力されるのですよね?

php内での「$this->変数名」(「$this->」付き)が、
Smartyで参照出来る事に留意してください。
$testではphp内のローカル変数となります。

引用:
それでは、その値にtplで再度値をプラスしたり、マイナスしたり
上書きするためにはどうしたらいいのでしょう?

先にも示しています様に、処理「プラス、マイナス」はphp側で行います。
tpl側は
1.デフォルト値を表示する。
2.formで
 1)処理モード
 2)「値」
 をphp側へ送り込む。
ことを行います。
(Smarty内でphpのインストラクションを記述できますが、eccubeでは非推奨です。)

引用:
そして、tplファイルでselecBoxを作っているのですが、それを
phpファイルの中の何かしらの変数に受け取らせるにはどうしたら
いいでしょうか?それかsessionに突っ込んで使用するにはどういう
方法がありますでしょうか?
平たく書きますと、tpl→php→tplという様に値をやりとりしたいと思っているのです。
Javaでいえば、session.getAttributeの様にやりとりできるのですが、PHPではやり方がわかりません。。。

概念的には
1.<select>タグで必要な選択肢を<option value="...>しておき
2.<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>
を流用して送り込みを記述し
3.php側で
 1)$objFormParam = $this->lfInitParam($_REQUEST);
  で受け取り( 「function lfInitParam($arrRequest) {」に新name値の追加は必要)
 2)switch($this->mode) {
  部分で処理分岐し、selectboxの値に対応した値を「例:$this->arrData["hogehoge"]」に代入し
4.tpl側で「$arrData["hogehoge"]」を表示する
となります。

fnFormModeSubmit()は「html/js/site.js」内で定義されています。

ここの部分は、時間が取れたら、サンプルコードで動作確認をした後、提示させて頂きたく、、、お時間ください。
   
引用:
そして初歩的すぎるとは思いますが、、
$objCartSess->delProduct($cart_no, $cartKey);
このような変数はどこで最初に宣言されているのでしょうか?


2.11.1とのことですので、data/class/pages/cart/LC_Page_Cart.phpの77行目の
    function action() {
        $objCartSess = new SC_CartSession_Ex();

になります。
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,301名です
総投稿数は110,081件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1304
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.