SugarCRMの問題をどのようにデバッグしますか、SugarCRMの仕組みを学びますか?
質問
私は会社をSalesForceからSugarCRMに移行しようとしていますが、厄介なバグに遭遇しました(アカウントにカスタムフィールドを追加すると、すべてのアカウントが表示されなくなります)。私たちはSugarCRMの人々からのサポートに対して支払いをしましたが、彼らはオープンソースバージョンのために永久に価値のない応答レベルの技術サポートを得るだけです(そして、ペストのようなプロプライエタリなソフトウェアを避けます)。ああ、そして私たちのSalesforce契約が週の終わりに期限切れになることを言及しましたか?
つまり、簡単に言えば、SugarCRMアプリを自分でデバッグするのにこだわっています。私は経験豊富なプログラマーであり、基本的なPHPコンピテンシーを持っていますが、この問題をどこで解決しようとしているかさえわかりません。そこにいるSugar開発者はSugarをデバッグするためのどんな種類のプロセスも推奨できますか?さまざまなPHPファイルの機能や、Sugarシステムの全体的な動作を理解するのに役立つリソースはありますか?
ちょうど私が話している種類の例として:スタックトレースを印刷するためにシュガーを取得する方法を見つけ、いくつかをたどることで、関連するすべての問題行のパターンに気付きました
<* > メソッド呼び出しが機能しない理由を試してみたいと思いますが、わかりません:
A) _tpl_vars
の機能
B) _tpl_vars
が定義されている場所
C) $ this
はどうあるべきか
D)フレームワークの $ this
が設定される場所
など。
だから誰かがこれらの質問に対する答えを見つける方法/場所を説明するのを手伝ってくれるなら、私は信じられないほど感謝しています。
解決 3
これは私の質問に対する完璧な答えではありませんが、この記事:
http:// developers.sugarcrm.com/wordpress/2008/09/26/where-is-the-code-for-x/
少し助けました。また、Sugarの公式ドキュメントを詳しく調べたところ、開発者ガイドにはSugarの動作方法に関する説明が含まれていることがわかりました(明らかに、Sugarの動作方法に焦点を当てているのではなく、Sugarに新しいことをさせる方法に焦点を当てているわけではありません)。
急成長中のその他のSugar開発者を支援する希望。
他のヒント
私は数年前にSugarCRMで働いていましたが、表面で見たものは好きでしたが、今あなたが経験していることのためにプロジェクトでそれを拒否することになりました。製品の内部はひどく不十分に文書化されています。私はこの製品のためにたくさんの洗練されたモジュールを書くことを想像していましたが、リソースは存在しません。コードを掘り起こし、フォーラムの投稿に注いで、あなたが達成しようとしていることの例を見つけようとすることに時間を費やします。物事がずっと良くなったように聞こえません。
PHPの経験が達人レベルよりも低く、他の多くのタスクや期限に間違いなく忙しいことを考えると、手遅れにならない場合は、少なくとも移行するまでこの移行を再検討する必要があると思いますシュガーでより快適なレベル。 Salesforceとの契約の期限切れにより、Sugarに移行することを余儀なくされた場合、深刻な胸焼けに陥る可能性があると思います!
Krumo ライブラリを使用してください。 var_dump
や print_r
よりも非常に簡単で優れています。
ソースコードをダウンロードして、カスタムフォルダのどこかに追加するだけです。 custom / includeフォルダーを使用します。
次に、ビューまたは必要なものをオーバーライドします。ファイルclass.krumo.phpファイルへのパスと、見てみたいオブジェクトのkrumoを含めます。
簡単な例-
<?php
require_once('include/MVC/View/views/view.detail.php');
require_once('custom/include/krumo/class.krumo.php');
class AccountsViewDetail extends ViewDetail {
function AccountsViewDetail() {
parent::ViewDetail();
}
// Override the parent function "preDisplay" to add our own template
function preDisplay(){
krumo($this->bean);
$metadataFile = $this->getMetaDataFile();
$this->dv = new DetailView2();
$this->dv->ss =& $this->ss;
$this->dv->setup($this->module, $this->bean, $metadataFile, 'custom/modules/Accounts/tpls/AccountsDetailView.tpl');
}
}
?>
ページにドリルダウンできる素敵なオブジェクトが表示されます。
これらのコードは、SugarCRMから直接ではなく、Smarty libからのものです。
このchm docが少し役立つかもしれません。 http://code.google .com / p / sugardoc / downloads / list 。
xdebug(PHP拡張)をインストールし、eclipseやKomodoなどの互換性のあるIDEでコードをステップ実行することもできます。
URLは、アクセスされているモジュールディレクトリとアクション/ビューを示します。 「ビュー」があります。ほとんどのモジュールの下のフォルダー。存在しない場合は、メタデータレイアウトと共にincludeフォルダーのデフォルトMVCビューを使用するか、index.php(listview)、DetailView.php、EditView.phpおよびテンプレートのクラシックビューアーキテクチャを使用しています。
過去2、3年で良くなった点がたくさんあるので、最初の答え(Nack)がまだ適切かどうかはわかりません。まだまだかなり荒いですが、新しいSugarフレームワークはPHPハッカーの親友です(アップグレードしやすい方法で非常に簡単にオーバーライドできます)。 PHPハッカーを既に持っていて、いくつかの機能強化のみを必要とする企業に最適です。そして、手頃な価格のPHP請負業者を見つけるのはそれほど難しくありません(免責事項:私は1人です)。あなたがオープンソースに興味があり、基本的なCRMが必要で、100人未満のユーザーしかいなければ、素晴らしいツールだと思います。
tplはsmartyテンプレートファイルです。画面にデータを表示するときに使用されます。デバッグプロセスをどのように行うかは、エラーlofに対して多くのvarダンプを作成するか、画面に表示するだけです。
サーバーでxdebugも取得します。これは非常に役立ちます。 Sugarはmvcプラットフォームなので、それがどのように機能するかを知ってください。そうすれば、はるかに簡単になります。
www.eontek.rsに投稿したスニペットをご覧ください
同じ問題が発生し、アカウントの詳細ページが表示されず、500内部エラーが発生した場合。 TPLによって生成されていないことを確認しました。最初に、そのフォルダのアクセス許可を確認しました。私の場合は、すべて設定されています。だから、cache \ modules \ accounts \ DetailView.tplのバックアップを取り、すべてが機能した後に手動でフィールドを追加しました。開発者モードでは、毎回このファイルを手動でコピーする必要があります。それは苦痛ですが、答えはまだありません。私はフォーラム、バグ、ツイッターでこれを尋ねましたが、助けはありません。ところで、Sugar Professionalを使用しています。
設定ミスだけでなく、コードのバグであることを確認することをお勧めします。管理者を介してフィールドを追加しています&gt;スタジオ&gt;連絡先&gt;フィールドまたはSOAP API経由?
Sugarの最新バージョンを使用していますか
プロジェクトがひどく不十分に文書化されており、チュートリアルや例が不足していることに本当に同意します。
私自身は、古くなった/欠落しているドキュメントの痛みを経験しています。 がんばろう!
$ this
は、現在のオブジェクトへの参照です。
class Test {
var $tmp;
function __construct() {
$this->tmp = 42;
}
}