バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 【ECCUBE3.0.10】注文画面に項目を追加したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ryooo_sk
投稿日時: 2017/1/21 20:35
対応状況: −−−
新米
登録日: 2016/12/26
居住地:
投稿: 5
【ECCUBE3.0.10】注文画面に項目を追加したい
【ECCUBE3.0.10】注文画面に項目を追加したい
お世話になっております。

注文時に、デフォルトの項目以外のものもフォームに追加し、
送信されるメールや管理画面上でも確認できるようにしたいと考えております。

具体的には、ラッピングの有無・メッセージカードの内容・のしの種類の選択、のようなセレクトボックスを、
/shopping
の画面に配置し、「お支払方法」を選ぶのと同じように扱いたいと考えています。

2系ですと
http://sachips.byeto.jp/eccube/orderform-add-item.html
のような記事を見つけることができたのですが、3系で同じような情報が見つからず。。。
具体的にどのように実装すれば実現できるのか、どなたか教えていただけないでしょうか。

よろしくお願いします。
468
投稿日時: 2017/1/22 14:36
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 【ECCUBE3.0.10】注文画面に項目を追加したい
もし、私がカスタマイズするならという前提での工程ですが、以下の作業が必要になるかと思います。
(実際に作業していないので、何か漏れているかもしれませんが・・・)

1.dtb_orderテーブルにカラムを追加
2.Orderエンティティクラスに新しい項目(ローカル変数 + getter/setter)を追加
3.Eccube.Entity.Order.dcm.ymlにテーブル追加したカラムとエンティティに追加したローカル変数のマッピングを追加
4.追加するセレクトボックスの選択肢のFormTypeクラスを追加
(ECCUBE標準の実装方法に則り、性別や職業のようにDBにマスタテーブルを作る場合は、
mtb_sexやmtb_jobのようなテーブルとSexエンティティやJobエンティティも作って、
マッピングも追加します。)
5.注文画面の入力項目をShoppingTypeクラスに追加する
6.テンプレートShopping/index.twigに項目を表示するエリア等を追加
7.ShoppingControllerクラスのconfirm()メソッド内で、追加した項目の情報をDBに保存するように処理を変更
8.メールテンプレートMail/order.twigに追加した項目の表示を追記

上記の作業はフロントのみの作業になりますので、
管理画面側も対応が必要かと思いますので、
テンプレートやFormTypeクラスに対する作業が同じくらいあるかと思います。

基本、symfony2の Form コンポーネントやTwig、Doctrineのルールに則って実装する必要がある為、
項目を追加するだけでも、
エンティティやFromType、twigなどをワンセットで触っていく必要があるかと思います。
(2.13系に比べて、作業する事や手を加える必要のあるファイルは多いかなと感じております)


商品ごとの設定と少し要件が異なりますが、
商品オプションプラグインでの対応は難しいのでしょうか?
http://www.ec-cube.net/products/detail.php?product_id=1148


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ryooo_sk
投稿日時: 2017/1/22 23:40
対応状況: −−−
新米
登録日: 2016/12/26
居住地:
投稿: 5
Re: 【ECCUBE3.0.10】注文画面に項目を追加したい
丁寧なご回答ありがとうございます。

symfony2については、きちんと学習したことがないため、項目追加はわりと敷居が高そうですね。。。影響範囲も大きそうです。

プラグインを使うか、運用でカバーするか、すこし考えてみたいと思います。

ありがとうございました!
katsuo77
投稿日時: 2017/11/16 17:34
対応状況: −−−
半人前
登録日: 2017/10/14
居住地:
投稿: 12
Re: 【ECCUBE3.0.10】注文画面に項目を追加したい
私もちょうどryooo_skさんのご質問と同じような実装をしたいと考えていたところこちらの投稿に行き当たりました。

468さんのご回答を参考に実装しおおよその部分は作ることができたのですが、

7.ShoppingControllerクラスのconfirm()メソッド内で、追加した項目の情報をDBに保存するように処理を変更

のところだけ実装方法がわかりません。
confirm()メソッド内の、
// お問い合わせ、配送時間などのフォーム項目をセット
$app['eccube.service.shopping']->setFormData($Order, $data);
// 購入処理
$app['eccube.service.shopping']->processPurchase($Order);

のあたりをいじるのかとはなんとなく思うのですが、実際のコード等教えていただいてもよろしいでしょうか?

よろしくお願いいたします。
468
投稿日時: 2017/11/16 20:39
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 【ECCUBE3.0.10】注文画面に項目を追加したい
>// お問い合わせ、配送時間などのフォーム項目をセット
>$app['eccube.service.shopping']->setFormData($Order, $data);
>// 購入処理
>$app['eccube.service.shopping']->processPurchase($Order);

上記の処理は、
/src/Eccube/Service/ShoppingService.php内のメソッドを呼び出して処理している所までは
ご理解いただけているという事でよろしかったでしょうか?


1098行目のfunction setFormData(Order $Order, array $data) {}の
中身を確認いただくと、
お問い合わせメッセージを$Orderにセットしていると思いますので、
同じように$Orderに追加したキーを指定して値をセットすれば、
OrderEntityに画面からの入力値を渡せます。
(formクラスがキチンと記述出来ていれば、
画面からの入力値は$data[xxx]に入っています)


1149行目のfunction processPurchase(Order $Order) {}は
金額の再計算、在庫数の計算、会員の累計購入金額の計算をしているだけですので、
追加した項目が金額や在庫数に関係ないのであれば、何も手を加える必要はないと思います。

EntityとDBのマッピング(/src/Eccube/Resource/doctrine/Eccube.Entity.Order.dcm.yml)が正しく記述できていれば、
あとは自動的にDBに値が保存されると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

katsuo77
投稿日時: 2017/11/17 17:46
対応状況: −−−
半人前
登録日: 2017/10/14
居住地:
投稿: 12
Re: 【ECCUBE3.0.10】注文画面に項目を追加したい
468様

早速のご回答ありがとうございます。
そちらのメソッドを呼び出していることは理解できていませんでした。。

ですが、教えていただいた通りfunction setFormData(Order $Order, array $data) {}内で値をセットしたところ、きちんとDBにも格納され望む挙動を示すことができました。

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


 



ログイン


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

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.