В этом материале мы поговорим об известной CRM-системе с открытым исходным кодом — SuiteCRM. Открытость системы предоставляет неограниченные возможности для настройки, и в качестве примера будет рассмотрен процесс создания динамически загружаемых каталогов из базы данных с помощью библиотеки jQuery select2. Select2 может работать как со статическими наборами вариантов выбора, так и получать данные из внешних источников, имеет широкие возможности настройки форматов отображения с помощью картинок и т. д. Формат данных представлен в виде JSON, поэтому наша задача — разработать EntryPoint такой, чтобы на выходе будет желаемая структура JSON. SuiteCRM основан на модели MVC, и для всех действий требуется доступ к контроллеру действий.
Бывают случаи, когда необходимо отступить от стандартного подхода MVC, поскольку использование традиционного подхода MVC может оказаться затруднительным или просто ненужным.
Создание собственных EntryPoints происходит в два этапа.
Первый — регистрация такой EntryPoint через встроенный фреймворк MVC. В листинге 1 показан пример регистрации EntryPoint в системе.
Листинг 1. .
/custom/Extension/application/Ext/EntryPointRegistry/custom_entry_point_registry.php
Второй этап — создание файла, непосредственно описывающего логику этой EntryPoint (Листинг 2).<Эphp $entry_point_registry['CustomEntryPoint'] = array( 'file' => 'custom/modules/<Module>/customEntryPoint.php', 'auth' => true );
Листинг 2. .
/custom//customEntryPoint.php <Эphp
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
echo 'Hello World!';
После создания этих файлов вам необходимо выполнить «Быстрое восстановление и перестроение», а затем перейти по адресу: .
index.phpЭentryPoint=CustomEntryPoint. Для генерации объектов JSON можно использовать другой подход, например, json_encode(), но в этом примере мы будем рассматривать простую конкатенацию строк, поскольку необходимо сгенерировать только часть объекта JSON. Листинг 3. .
/custom//customEntryPoint.php <Эphp
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
$response = '{"more": "false", "results":[';
$sql = "SELECT stage, name FROM opportunity_stages order by name";
$res = $GLOBALS['db']->query($sql);
if (!$res) {
die('Bad query');
}
while($row = $GLOBALS['db']->fetchByAssoc($res)){
$response .
= '{"text":"' .
$row["stage"] .
'", ' .
$row["name"] .
'],'; } $response = rtrim($response, ","); $response .
= ']}';
header('Content-Type: application/json');
echo $response;
Результат работы представлен в листинге 4. Листинг 4.
index.phpЭentryPoint=CustomEntryPoint {
Теги: #JavaScript #php #Функциональное программирование #jQuery #инфосистемы Jet #инфосистемы Jet #инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #Инфосистемы Jet #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет #инфосистемы джет инфосистемы jet #select2 #SuiteCRM #EntryPoints
-
Бесплатная Отчетность О Расходах
19 Oct, 24 -
Военные Разработки: Тайный Колосс
19 Oct, 24 -
Немного Порно С Ipad
19 Oct, 24 -
«Дпи Платит За Себя»: Текущие Бизнес-Кейсы
19 Oct, 24 -
Akamai Приобретет Netli
19 Oct, 24