バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

その他 > その他 > コントローラーのカスタマイズ方法

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
liveinwood
投稿日時: 2019/4/5 17:06
対応状況: −−−
新米
登録日: 2019/3/12
居住地:
投稿: 5
コントローラーのカスタマイズ方法
コントローラーのコードを修正しないと実現できないカスタマイズ要件の場合に、皆様がどのように対応しているのか、
どうするのがECCUBE的に正道なのか知りたいです。

私の思いつく方法としては次の2つの方法がありますが、どちらがよいのでしょうか。
他にもっと良い方法があるのでしょうか。

1.ECCUBE本体のコードを修正する
2.修正したいコントローラーのソースをapp/customize配下にまるまるコピーして、必要な箇所だけ修正する。

皆様のご意見いただけると幸いです。
よろしくお願いいたします。
468
投稿日時: 2019/4/5 17:31
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: コントローラーのカスタマイズ方法
2.の手順が良いのではないかと思いますが、
修正する内容によっては、コントローラーをまるまるコピーする必要はないかと思います。
可能であれば、カスタマイズしたいメソッドのみ追記して、ルーティングを上書きするのが良いのではないかと思います。


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

nanasess
投稿日時: 2019/4/5 18:14
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: コントローラーのカスタマイズ方法
app/Customize を使うと、カスタマイズした差分がわかりにくくなるので、本体をカスタマイズして Git でバージョン管理するのが好みです。
バージョンアップも git merge でできますし、差分も簡単に把握できます。

ご参考
https://qiita.com/nanasess/items/fe2a93ff64833d87eb19

app/Customize に置くと、バージョンアップを適用したい場合に手作業でマージする必要があります。
liveinwood
投稿日時: 2019/4/5 21:48
対応状況: −−−
新米
登録日: 2019/3/12
居住地:
投稿: 5
Re: コントローラーのカスタマイズ方法
ご意見ありがとうございます。

1か2のどちらか一方に寄せるのではなく、状況に応じて使い分けるのが良いのでは?と勝手に納得しました。

ECCUBE(Symfony)が提供している拡張機能だけで実現できるなら、本体のコードを修正する必要はないわけですし、
それこそバージョンアップは簡単なはすですよね?
どうしても本体のコードをいじる必要があるなら、app/Customizeに配置するのではなく、本体コードを直接修正するほうが
差分確認の点で有利ですから。

本題とは話がそれますが、リポジトリにメソッドを追加したり、PurchaseFlowのカスタマイズは本体コードを直接修正するしか方法がない認識であっていますでしょうか?


nanasess
投稿日時: 2019/4/7 10:10
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: コントローラーのカスタマイズ方法
引用:

ECCUBE(Symfony)が提供している拡張機能だけで実現できるなら、


このあたりはまだ発展途上なので、拡張機能だけで何とかするのは現状では難しいと思います。
(もちろん将来的には何とかできるようにしたいです)

また、うまく拡張機能だけでカスタマイズできたとしても、バージョンアップ時の修正内容が干渉した場合は、手動でマージする必要があります。

バージョンアップが楽になるのは、単体テストや E2Eテストで検証が可能な場合です。
自動でテストできない状況であれば、カスタマイズ部分への影響を手作業で検証する必要があり、バージョンアップが楽になるとは言えません。

引用:

本題とは話がそれますが、リポジトリにメソッドを追加したり、PurchaseFlowのカスタマイズは本体コードを直接修正するしか方法がない認識であっていますでしょうか?


Decorator パターンで拡張しておいて、 DI で取得しているインスタンスを入れ替えることができれば良いのですが、、
本体では具象クラスのインスタンスを利用しているため、本体に手を入れる必要がありますね。。
このあたりがまだ発展途上なので、今後のバージョンアップで対応されれば良いなと思っています。
liveinwood
投稿日時: 2019/4/8 10:18
対応状況: −−−
新米
登録日: 2019/3/12
居住地:
投稿: 5
Re: コントローラーのカスタマイズ方法
ご意見ありがとうございます。

例えば既存フォームに項目を追加するような、ECCUBE(Symfony)の拡張機能だけで済むカスタマイズでも、本体のFormTypeを修正した方が良い、というお考えでしょうか。
nanasess
投稿日時: 2019/4/9 12:27
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: コントローラーのカスタマイズ方法
ケースバイケースですね。。
大規模なカスタマイズをする場合、フォームの項目追加のみ拡張機能でやっていると保守性悪くなってしまいますし、
わかりやすい単純なカスタマイズのみであれば、拡張機能のほうが良い場合もあると思います。

引継ぎなどが発生した場合に、追いやすくすることが重要かなと思います
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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.