1

Module Loader モジュールを介して、独自の API を Sugar インスタンスに定義したいと考えています。chdirコマンドを使用せずに、SugarCRM モジュールで独自の SOAP/REST API を定義するにはどうすればよいですか?

ドキュメントでは、REST API をアップグレードセーフな方法で拡張する方法が説明されており、chdir コマンドが含まれてい ます。 -Chapter%202%20Application%20Framework.html#9001337

ただし、chdirコマンドは、モジュール ローダーの制限を使用するインストールでは禁止されています: http://developers.sugarcrm.com/wordpress/2009/08/14/module-loader-restrictions/

これらの制限がオンになっている場合、コードに chdir コマンドを含めることはできません。たとえば、Sugar on Demand インスタンスの場合です。

カスタム REST API を定義する他の方法はありますか? モジュールのみを使用して、REST API を SugarCRM に追加するにはどうすればよいですか? ありがとうございました。

4

2 に答える 2

2

同じ問題に遭遇する人のために、適切な回避策を見つけました。

REST (または SOAP) API を定義するファイルは、Sugar ベース パスに配置できます。そうすればchdirは必要ありません。たとえば、myapi.php を呼び出すことができます。

<?php
$webservice_class = 'SugarRestService_v2_custom';
$webservice_path = 'custom/myapi/v2/SugarRestService_v2_custom.php';
$registry_class = 'registry_custom';
$registry_path = 'custom/myapi/v2/registry_custom.php';
$webservice_impl_class = 'SugarRestServiceImpl_v2_custom';
$location = 'custom/myapi/v2/rest.php';
require_once('service/core/webservice.php');

ファイルをモジュール内の特別なディレクトリに配置します。たとえば、 basepathと呼びます。次に、manifest.php ファイルで次のように宣言します。

'copy' => array (
0 => 
array (
  'from' => '<basepath>/basepath',
  'to' => '.',
),
...
于 2011-04-28T06:30:33.430 に答える
2

これは、SugarCRM の今後のリリースで修正する予定です (詳細については、http: //www.sugarcrm.com/crm/support/bugs.html#issue_43734 のバグ 43734 を参照してください)。

インスタンスでこれを修正するには、service/core/webservice.php ファイルの先頭に次の行を追加するだけです。

chdir(dirname(__FILE__).'/../../');
于 2011-05-03T02:49:15.780 に答える