というのを聞いたのでメモメモ。
SugarCRM4.5の場合、たしかにMVCモデルになっていて、
M(モデル)がモジュールにおける、それぞれのSugarBean、
V(ビュー:画面)がEditView,DetailView,ListViewなど
C(コントロール)が、index.phpで、ここから各チェックがおこなわれ、
各画面をディスパッチしていた。
そのため、index.phpのプログラムはかなり大きく、ディスパッチ部分を修正すると
なると、index.phpに手を入れることになるので、競合しやすかった。
SugarCRM5.0においては、
M(モデル)がモジュールにおける、それぞれのSugarBean、
V(ビュー:画面)がSugarViewで、EditView,DetailView,ListViewなど、
C(コントロール)がSugarControllerクラスで、index.phpから呼ばれる
なので、すべてindex.phpに入ってくるところは4.5と同じなんだけど、
5.0のindex.phpは、本当に書いてあることは少なくて、
起動処理の多くは、SugarControllerに書かれている。
そして、SugarCRM5.0におけるSaveなどのデフォルトの操作は、このSugarController
に定義されている。この定義以外の動作をさせたい場合は、各モジュール内に
Controller.phpを作成し、そこで、そのモジュールでの動作を記述する(つまり、
オーバーライドする)
ビューのEditView,DetailView,ListViewに関しては、その項目などに関して、
各モジュールのmetadata内にEditViewdefs,php,DetailViewdefs,php,ListViewdefs,php
などなどあるので、そこの値を修正する・・・としてしまうと、バージョンアップで
競合してしまったりするので、カスタマイズは、customフォルダの下にmodulesがあって、
そこに修正したモジュールがあるので、そこに変更分を記述する。
これは、スタジオで画面を編集すると、自然とそこにできる(逆に言うとスタジオでの
画面変更は、modules内の内容には影響を与えない)
だそうな。。話はまだまだ続くが、長くなるのでまた今度