Использование Entrypoints В Suitecrm

В этом материале мы поговорим об известной 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

  
  
  
   

<Эphp $entry_point_registry['CustomEntryPoint'] = array( 'file' => 'custom/modules/<Module>/customEntryPoint.php', 'auth' => true );

Второй этап — создание файла, непосредственно описывающего логику этой EntryPoint (Листинг 2).

Листинг 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

Вместе с данным постом часто просматривают: