機能要望 > その他 > EC-CUBE3:商品詳細に追加したフォームをカートに表示したい |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
fresh |
投稿日時: 2017/2/5 15:30
対応状況: −−−
|
半人前 登録日: 2016/11/29 居住地: 投稿: 24 |
EC-CUBE3:商品詳細に追加したフォームをカートに表示したい ------------------------------------------------------
[EC-CUBE] 3.0.10 [レンタルサーバ] さくら ------------------------------------------------------ 初めて投稿します。 いろいろ試してみたのですが、どうしてもわからないので質問させてください。 何がしたいかというと、商品詳細ページに利用目的のセレクトボックス追加しました。 AddCartType.php何に ->add('mokuteki', 'choice', array( 'choices' => array('__unselected' => '選択してください', '1' => '自分用', '2' => '家族', '3' => 'プレゼント', '4' => 'その他'), )) と、追加し /Product/detail.twig 内に {{ form_widget(form.mokuteki) }} {{ form_errors(form.mokuteki) }} といれて、セレクターを表示させるまではできたのですが、 そのあとの/cartや/shoppingのにも表示させ、注文確認メールでも記載されるようにしたいのですが、いろいろ試してもさっぱりで。。 単純に{{ form_widget(form.mokuteki) }}で表示されるとおもっていのですが、無反応で。。 プラグインは予算的に厳しいので最終手段にして、勉強のためにももうちょっとチャレンジしたのですが、ヒントだけでもどなかた教えてくれませんでしょうか。。 まずいじるファイルは下記くらいなのかとおもっているのですが他にもあるのでしょうか? ・AddCartType.php ・/Product/detail.twig ・/Cart/index.twig ・/Shopping/index.twig ・/Mail/order.twig 基本からしっかり学ぶSymfony2入門とか買ってみたのですが、やはりちんぷんかんぷんで。。 すみませんがよろしくお願いいたします。 |
umebius |
投稿日時: 2017/2/5 15:53
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい とりあえずカートに利用目的を入れるまでの行程になりますが、下記の修正が必要です。
まず、/src/Eccube/Entity/CartItem.phpに各商品の利用目的を保存するためのプロパティが必要です。$mokutekiというプロパティとセッターゲッターを書いてください。 次に、/src/Eccube/Service/CartService.phpのaddProductメソッド、setProductQuantityメソッドを修正して、CartItemに「利用目的」情報をセットしてください。 AddCartTypeのフォームのデータをCartServiceに渡して保存するのは/src/Eccube/Controller/ProductController.phpの役割です。 おそらく下記のような記述があると思いますので、利用目的($addCartData['mokuteki'])も同時にCartServiceへ渡すように修正してください。 $app['eccube.service.cart']->addProduct($addCartData['product_class_id'], $addCartData['quantity'])->save(); 以上はカートに利用目的を入れるまでですが、その後Shopping関連はOrderDetail、ShipmentItem、ShoppingServiceなど様々な修正が必要です。データベースの項目追加、定義ファイルの修正も必要です。 メールはMail/order.twigを修正することになるかと思います。
|
fresh |
投稿日時: 2017/2/5 16:08
対応状況: −−−
|
半人前 登録日: 2016/11/29 居住地: 投稿: 24 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい umebius 様
umebiusさんの時間を割いてのご回答ありがとうございます。 感謝します! いろいろやったなかでCartItem.phpにセッターゲッターを書くものやってました! が、CartService.phpやProductController.phpにはたどり着いてませんでした。。 いじるファイルがわかっただけでかなりありがたいです。 早速、トライしてみようとおもいます! また結果報告させていただきます。 |
umebius |
投稿日時: 2017/2/5 17:42
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい はい、CartItemの__sleep()メソッドにmokuteki追加も必要ですね。
忘れておりました。
|
fresh |
投稿日時: 2017/2/5 18:55
対応状況: −−−
|
半人前 登録日: 2016/11/29 居住地: 投稿: 24 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい 下記のようにやってみたのですが、カートにいれるボタンをおすと500エラーになってしましました。
/src/Eccube/Entity/CartItem.php
/src/Eccube/Service/CartService.php
/src/Eccube/Controller/ProductController.php (2箇所ありました)
をやってみましたが、、 特にCartService.phpのところが、ぜんぜん違うことやっているような気がしてなりません。。 あまりにわかってなさすぎて、コードさらすのも恥ずかしいのですが。。 もう少しヒントをいただけますでしょうか。。。すみません。。。 |
fresh |
投稿日時: 2017/2/5 18:56
対応状況: 確認中
|
半人前 登録日: 2016/11/29 居住地: 投稿: 24 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい ありがとうございます。
こちらもいれてみます! |
umebius |
投稿日時: 2017/2/5 20:48
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい エラーの原因は
$app['eccube.service.cart']->addProduct($addCartData['product_class_id'], $addCartData['quantity'], $addCartData['mokuteki'])->save(); でaddProductに3つ変数を渡しているのに、 実際のaddProductは2つしか引数がないからではないでしょうか。
|
umebius |
投稿日時: 2017/2/5 20:53
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい なお、既にカートに同じ商品が入っているが入力された目的が違うという場合にどう処理したいかでCartServiceの書き方は異なってきます。
カートへの追加を禁止するのか、目的を上書きして個数をプラスするのか、同一商品目的違いを共存させるのか、等。 基本的にはaddProductは下記のようになると思います。
|
fresh |
投稿日時: 2017/2/5 21:57
対応状況: −−−
|
半人前 登録日: 2016/11/29 居住地: 投稿: 24 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい umebius様
/cart/index.twigに ↓ {{ form_widget(form.mokuteki) }} をいれてみたらページ自体は表示されますが、この部分はなにも表示されずダメだったので {{ CartItem.mokuteki) }}にしてみたところ またエラー500ではないですが 「システムエラーが発生しました。」 になってしまいました。 >なお、既にカートに同じ商品が入っているが入力された目的が違うという場合にどう処理したいかでCartServiceの書き方は異なってきます。 ただ、何に使うのか知りたいだけで、とくにそれによって何か処理をするという目的ではないです。 他にも商品の規格で代用できないかと思ったのですが、規格関係なく購入制限を1にしたかったのですが、規格ごとに制限が1になってしまったので諦めました。 (ec-cube2だとググったらいろいろ出てきたのですが3は本当に情報が少ないですね・・) あぁ。。本当にECCUBE3難しいです。。。 せっかくたくさんのヒントをくださっているのに、最初に質問してからずっとトライしてもまったくできそうもないです。 とりあえず、1商品しかなく制限数も1なので、購入時に会員登録するので、そこの職業のマスターデータを利用目的に変更して、入れておきました ^^; 諦めたくないですが、もうちょっと基本的なプログラムの知識がないとこのカスタマイズは厳しそうですね。。 ちょっと心が折れてきてしまいましたが、またリフレッシュして、トライしてみます。 仮にですが、umebius様のところで、今回のカスタマイズをお願いしたらいくらくらいになりますか? よろしければPMででもお返事いただけると助かります。m(_ _)m |
umebius |
投稿日時: 2017/2/6 15:35
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: EC-CUBE3:商品詳細に追加したフォームをカートに表示したい 引用:
またエラー500ではないですが ローカルで開発されているのでしたら、 http://xxx.com/index_dev.php/cartという形でアクセスすればエラー詳細表示されると思います。 ローカルでなければ、index_dev.phpに許可IPの設定が必要です。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |