#php #rest #sugarcrm
#php #rest #sugarcrm
Вопрос:
Я хотел бы определить свой собственный API для экземпляров Sugar через модуль загрузки модуля. Как я могу определить свой собственный SOAP / REST API в модуле SugarCRM без использования команды chdir?
В документации, как это объясняется, для расширения REST API безопасным для обновления способом, используется команда chdir: http://developers.sugarcrm.com/docs/OS/6.1/-docs-Developer_Guides-Sugar_Developer_Guide_6.1.0-Chapter 2 Application Framework.html#9001337
Однако команда chdir запрещена установками, использующими ограничения на загрузку модуля: http://developers.sugarcrm.com/wordpress/2009/08/14/module-loader-restrictions
Наличие команды chdir в коде не допускается, когда эти ограничения включены, что имеет место, например, для экземпляров Sugar on Demand.
Существуют ли какие-либо другие способы определения пользовательских REST API? Как я могу добавить REST API в SugarCRM, используя только модуль? Спасибо.
Ответ №1:
Для тех, кто столкнется с такой же проблемой, я нашел адекватный обходной путь.
Файл, который определяет 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' => '.',
),
...
Комментарии:
1. У меня это не работает в локальном CE 6.5 или ondemand 7.1 — мне не удалось скопировать. ошибка в журнале установки.
Ответ №2:
Мы планируем исправить это в будущей версии SugarCRM (см. Ошибку 43734 на http://www.sugarcrm.com/crm/support/bugs.html#issue_43734 для получения дополнительной информации).
Чтобы исправить это на вашем экземпляре, просто добавьте эту строку в начало service/core/webservice.php файл:
chdir(dirname(__FILE__).'/../../');