質問 > フロント機能 > 《初心者です》商品詳細ページにオプションを追加したい。 |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yuh |
投稿日時: 2015/2/26 20:57
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 ○○ファイルの△△行目付近(以前)で、オブジェクトに関連付けられていないメンバー関数を呼び出したことによる、致命的エラー
エラーメッセージ Fatal error: Call to a member function **() on a non-object in ○○ on line △△ まずはPHPの基本的な事から調べてください。 |
mom |
投稿日時: 2015/2/26 19:05
対応状況: −−−
|
半人前 登録日: 2015/2/17 居住地: 京都 投稿: 16 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 エラーログ
引用: Call to a member function getCartProductID() on a non-object on [/Applications/MAMP/htdocs/test3/data/class/pages/products/LC_Page_Products_Detail.php(220)] from ::1 と出ていますので、 SC_CartSession.php内のgetCartProductID()がこちらに対応していると言う事で宜しいのでしょうか。 function getCartProductID($cartKey) { // カートキーの最大要素番号を取得する $max = $this->getMax($cartKey); // 全てのカートに含まれている商品IDを取得する for($i = 0; $i <= $max; $i++) { if($this->cartSession[$cartKey][$i]['cart_no'] != "") { $arrRet[] = $this->cartSession[$cartKey][$i]['productsClass']['product_id']; } } return $arrRet; } となっています。 この場合どういった対応を行えば良いのでしょうか。 |
yuh |
投稿日時: 2015/2/26 18:44
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 Call to a member function等のエラーログを調べてください
|
mom |
投稿日時: 2015/2/26 17:18
対応状況: −−−
|
半人前 登録日: 2015/2/17 居住地: 京都 投稿: 16 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 現在商品詳細ページにオプションを作成しようとして、トライしています。
http://itoben.com/blog/551.html こちらのページ通り、 dtp_products dtb_order dtb_order_temp にカラム追加 マスターテーブルを2つ追加 mtb_constantsにカラムを追加 を行い data/class/SC_CartSession.php data/class/helper/SC_Helper_DB.php 管理画面 data/class/page/admin/products/LC_Page_Admin_Products_Product.php data/Smarty/templates/admin/products/product.tpl data/Smarty/templates/admin/products/confirm.tpl に登録完了 次、商品購入/お支払い方法・お届け時間等の指定ページにプルダウンメニューを掲載するため、 data/class/pages/shopping/LC_Page_Shopping_Payment.php こちらで function init() function action() function lfInitParam をカスタマイズ data/Smarty/templates/default/shopping/payment.tpl data/class/pages/shopping/LC_Page_Shopping_Confirm.php に呼び出し これでうまくいきましたので、 同等の物を商品詳細ページに移行しようと思い、 LC_Page_Produsts_Detail.php にて同じく function init() function action() function lfInitParam をカスタマイズ data/Smarty/templates/default/protucts/detail.tplもカスタマイズしたのですが、 以下のエラーコードが出てしまいます。 引用: 2015/02/26 17:04:35 [/test3/products/detail.php] Fatal error(E_ERROR): Call to a member function getCartProductID() on a non-object on [/Applications/MAMP/htdocs/test3/data/class/pages/products/LC_Page_Products_Detail.php(220)] from ::1 LC_Page_Products_Detail.php(220)には 引用: $this->gift_paper_flg = $objDb->sfJudgeShowGiftPaper($objCartSess->getCartProductID($this->cartKey)); この様に記されています。 こちらの文を、 $this->gift_paper_flg = $objDb->sfJudgeShowGiftPaper($this->arrForm['product_id']['value']); この様に変更したらデータベースのエラーになりました。 class LC_Page_Products_Detail extends LC_Page_Ex内には 引用: public $arrGIFTPAPER; も追加しています。 SC_CartSession.phpの対応する箇所としては、 function getCartProductID($cartKey) { // カートキーの最大要素番号を取得する $max = $this->getMax($cartKey); // 全てのカートに含まれている商品IDを取得する for($i = 0; $i <= $max; $i++) { if($this->cartSession[$cartKey][$i]['cart_no'] != "") { $arrRet[] = $this->cartSession[$cartKey][$i]['productsClass']['product_id']; } } return $arrRet; } この様になっています。 もう、一息と言う所まで来たので、なんとか実現させたいです。 何卒、ご教授ください。宜しくお願いいたします。 |
mom |
投稿日時: 2015/2/26 17:06
対応状況: −−−
|
半人前 登録日: 2015/2/17 居住地: 京都 投稿: 16 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 yuh様、ありがとうございました。勉強になりました。
現在違う方法でトライしています。が、またエラーになってしまいました。配送情報・お支払いのページに掲載する事は出来たのですが。それを商品詳細ページに移行する際にエラーになってしまいます。 |
yuh |
投稿日時: 2015/2/24 23:57
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 smallintでフィールド作ってるのに
$objFormParam->addParam('目的', 'mokuteki_set', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); が文字列です。 $objFormParam->addParam('目的', 'mokuteki_set', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); と変更してippitsu_setがないので $objFormParam->addParam('目的', 'ippitsu_set', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); これも追加してください $mokuteki = $this->arrMOKUTEKI[$this->objFormParam->getValue('mokuteki_set')]; $ippitsu = $this->arrIPPITSU[$this->objFormParam->getValue('ippitsu_set')]; と書かれてるので、文字列で入るはずです。 なので $mokuteki = $this->objFormParam->getValue('mokuteki_set'); $ippitsu = $this->objFormParam->getValue('ippitsu_set'); と変更してください $objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'), $mokuteki, $ippitsu); で渡してるのに public function addProduct($product_class_id, $quantity,$mokuteki=NULL) となっているので public function addProduct($product_class_id, $quantity,$mokuteki=NULL,ippitsu = NULL) と変更してください。 とりあえずコピペして追加してみました→デバッグしてください っていうのはどうなんでしょう・・・。 無理でしたらインテグレートパートナーの会社様にご依頼するのがよろしいかと思います。 |
mom |
投稿日時: 2015/2/24 22:45
対応状況: −−−
|
半人前 登録日: 2015/2/17 居住地: 京都 投稿: 16 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 yuh様
度々ありがとうございます。 何度、試行錯誤してもデータが入りませんでした。 以下長文になりますが、ご覧頂けたとして、解決策はございますでしょうか。 素人ながらもカスタマイズ挑戦の限界と行った感じで、ヒント等ご教授頂けましたら、幸いです。 何卒、宜しくお願いいたします。 detail.tpl 引用: <!--{* 【追加】 *}--> LC_Page_Products_Detail.php 該当箇所 引用: public function doCart() 引用: /** 目的 */ 引用: $this->arrMOKUTEKI = $masterData->getMasterData('mtb_mokuteki'); //【追記】 引用: $objFormParam->addParam('目的', 'mokuteki_set', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); SC_CartSession.php 引用: // カートへの商品追加 引用: public function adjustSessionProductsClass(&$arrProductsClass) LC_Page_Cart.php 引用: $objFormParam->addParam('目的', 'mokuteki_set', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); SC_Helper_Purchase.php 引用: // 詳細情報を生成 引用: public function getOrderDetail($order_id, $has_order_status = true) confirm.tpl 引用: <!--{* 【追加】 *}--> ちなみにデータベースは dtb_productsに 引用: mokuteki smallint NULLいいえ 2 dtb_order_detailに 引用: mokuteki_set smallint NULLいいえ なし mtb_mokutekiに 引用:
を作成しています。 ここまでが現在の私のカスタマイズになります。 宜しくお願いいたします。 |
yuh |
投稿日時: 2015/2/24 22:02
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 その部分はSESSIONで受け渡しがされるはずなので、うまく入ってないんじゃないかとおもいます。
|
mom |
投稿日時: 2015/2/24 21:07
対応状況: −−−
|
半人前 登録日: 2015/2/17 居住地: 京都 投稿: 16 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 detail.tplにて、
<!--{$arrErr|@debug_print_var}--> = NULL <!--{$arrMOKUTEKI|@debug_print_var}--> = Array (2) <!--{$arrForm|@debug_print_var}--> =mokuteki_set => Array (4) cart/index.tplにて <!--{$item|@debug_print_var}--> = mokuteki_set => null ippitsu_set => null ここのitemに値が受け渡されていないのが原因な様です。 おそらく、該当はSC_Helper_Purchase.phpだと思うのですが、 public function registerOrderComplete 下に foreach ($cartItems as $item) { ・・・ $arrDetail[$i]['mokuteki_set'] = $item['mokuteki_set']; //【追記】 $arrDetail[$i]['ippitsu_set'] = $item['ippitsu_set']; //【追記】 こちらを入れているのに、データが受け渡しされていない、という事なのでしょうか。。 dumpを知って、ページ間のつながりが見えてきました。ありがとうございます。 |
yuh |
投稿日時: 2015/2/24 19:56
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 《初心者です》商品詳細ページにオプションを追加したい。 どこまで値が入っているかを順にチェックしていった方がいいと思います。
|
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |